forked from wei/pull
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.test.js
More file actions
101 lines (95 loc) · 4.64 KB
/
schema.test.js
File metadata and controls
101 lines (95 loc) · 4.64 KB
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
89
90
91
92
93
94
95
96
97
98
99
100
101
/* eslint-env node, jest */
const schema = require('../lib/schema').schemaWithDeprecation
const validConfigs = [
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: true }], label: 'pull' }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: true }], label: 'pull', conflictLabel: 'merge-conflict' }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: true, assignees: ['wei'] }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: false, reviewers: ['wei'] }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: false, reviewers: ['wei'], conflictReviewers: ['saurabh702'] }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', mergeMethod: 'squash', mergeUnstable: true }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', mergeMethod: 'hardreset', assignees: ['wei'] }] }],
[{
version: '1',
rules: [
{ base: 'master', upstream: 'upstream:master', autoMerge: true },
{ base: 'development', upstream: 'upstream:development', autoMerge: false, autoMergeHardReset: true }
]
}],
[{
version: '1',
rules: [
{ base: 'master', upstream: 'upstream:master', autoMerge: true, autoMergeHardReset: true, assignees: ['wei'] },
{ base: 'development', upstream: 'upstream:development', autoMerge: false, autoMergeHardReset: true, reviewers: ['wei'] },
{ base: 'development', upstream: 'upstream:development', autoMerge: false, autoMergeHardReset: true, reviewers: ['wei'], conflictReviewers: ['saurabh702'] }
],
label: 'pull',
conflictLabel: 'merge-conflict'
}]
]
const invalidConfigs = [
{ },
{ rules: {} },
{ version: '' },
{ version: '1' },
{ version: '1', rules: [] },
{ version: '1', rules: [{ base: 'master' }] },
{ version: 1, rules: [{ base: 'master', upstream: 'upstream:master' }] },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }], label: 1 },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }], label: 1, conflictLabel: 2 },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }], label: '', conflictLabel: '' },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }], label: 'pull', conflictLabel: 1 },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }], label: 'pull', conflictLabel: '' },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', assignees: '' }] },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', reviewers: '' }] },
{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', reviewers: '', conflictReviewers: '' }] },
{ version: '1', rules: [{ base: 'master', upstream: '' }] },
{ version: '1', rules: [{ base: 'master', autoMerge: 1 }] },
{ version: '1', rules: [{ base: 'master', autoMerge: '' }] },
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', mergeMethod: '' }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', mergeMethod: 'invalid' }] }],
[{ version: '1', rules: [{ base: 'master', upstream: 'upstream:master', mergeMethod: true }] }],
{
version: '1',
rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: true, autoMergeHardReset: 1 }]
},
{
version: '1',
rules: [{ base: 'master', upstream: 'upstream:master', autoMerge: true, autoMergeHardReset: '' }]
}
]
describe('schema', () => {
test('defaults', async () => {
expect(schema.validate({ version: '1', rules: [{ base: 'master', upstream: 'upstream:master' }] }).value).toEqual({
version: '1',
rules: [
{
base: 'master',
upstream: 'upstream:master',
autoMerge: false,
autoMergeHardReset: false,
mergeMethod: 'none',
mergeUnstable: false,
assignees: [],
reviewers: [],
conflictReviewers: []
}
],
label: ':arrow_heading_down: pull',
conflictLabel: 'merge-conflict'
})
})
validConfigs.forEach(([example, expected = example]) => {
test(`${JSON.stringify(example)} is valid`, () => {
const { error, value } = schema.validate(example)
expect(error).toBe(undefined)
expect(value).toMatchObject(expected)
})
})
invalidConfigs.forEach((example) => {
test(`${JSON.stringify(example)} is invalid`, () => {
const { error } = schema.validate(example)
expect(error && error.toString()).toMatchSnapshot()
})
})
})