-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.js
88 lines (75 loc) · 2.32 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const { onCreatePage } = require('./gatsby-node');
const mockObj = {
page: {
path: ''
},
actions: {
deletePage: jest.fn()
},
reporter: {
panic: jest.fn().mockImplementation(() => {
throw new Error();
})
}
};
const exclusionCases = [
['/abcd', ['/abcd']],
['/abcde/asdf', ['/abcde/*']],
['/abcd/asd/asd', ['/abcd/**', '!/abcd/asd']],
['/abcd/asd/asd', ['/abcd/*', '!/abcd/asd', '/abcd/asd/asd']]
];
const notExclusionCases = [
['/abc/abc', ['/abc/*', '!/abc/abc']],
['/abc/abc/', ['/abc/*', '!/abc/abc']],
['/abcd/asd/asd', ['/abcd/*', '!/abcd/asd']],
['/abc/abc/asd', ['/abc/*', '!/abc/abc/*']]
];
afterEach(() => {
mockObj.actions.deletePage.mockClear();
mockObj.reporter.panic.mockClear();
});
describe('onCreatePage', () => {
it.each([{}, 0, null, /$/, '', undefined])(
"should call reporter.panic if options.paths is '%p'",
value => {
expect(() => onCreatePage(mockObj, { paths: value })).toThrow();
expect(mockObj.reporter.panic).toHaveBeenCalledTimes(1);
}
);
it('should not call reporter.panic if options.paths is an array', () => {
onCreatePage(mockObj, { paths: [] });
expect(mockObj.reporter.panic).not.toHaveBeenCalled();
});
it.each([{}, 0, null, /$/, [], undefined])(
"should call reporter.panic if options.paths is an array with '%p'",
value => {
expect(() => onCreatePage(mockObj, { paths: [value] })).toThrow();
expect(mockObj.reporter.panic).toHaveBeenCalledTimes(1);
}
);
it('should not call reporter.panic if options.paths is an array of strings', () => {
onCreatePage(mockObj, { paths: [''] });
expect(mockObj.reporter.panic).not.toHaveBeenCalled();
});
it.each(exclusionCases)(
"should call deletePage(page) for '%s' => %p",
(path, patterns) => {
const page = {
path
};
onCreatePage({ ...mockObj, page }, { paths: patterns });
expect(mockObj.actions.deletePage).toHaveBeenCalledTimes(1);
expect(mockObj.actions.deletePage).toHaveBeenCalledWith(page);
}
);
it.each(notExclusionCases)(
"should not call deletePage(page) for '%s' => %p",
(path, patterns) => {
const page = {
path
};
onCreatePage({ ...mockObj, page }, { paths: patterns });
expect(mockObj.actions.deletePage).not.toHaveBeenCalled();
}
);
});