forked from conventional-changelog/commitlint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscope-enum.test.ts
139 lines (119 loc) Β· 4.7 KB
/
scope-enum.test.ts
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import parse from '@commitlint/parse';
import {scopeEnum} from './scope-enum';
const messages = {
plain: 'foo(bar): baz',
superfluous: 'foo(): baz',
empty: 'foo: baz',
multiple: 'foo(bar,baz): qux',
multipleCommaSpace: 'foo(bar, baz): qux',
};
const parsed = {
plain: parse(messages.plain),
superfluous: parse(messages.superfluous),
empty: parse(messages.empty),
multiple: parse(messages.multiple),
multipleCommaSpace: parse(messages.multipleCommaSpace),
};
test('scope-enum with plain message and always should succeed empty enum', async () => {
const [actual] = scopeEnum(await parsed.plain, 'always', []);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with plain message and never should error empty enum', async () => {
const [actual, message] = scopeEnum(await parsed.plain, 'never', []);
const expected = false;
expect(actual).toEqual(expected);
expect(message).toEqual('scope must not be one of []');
});
test('with plain message should succeed correct enum', async () => {
const [actual] = scopeEnum(await parsed.plain, 'always', ['bar']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with plain message should error false enum', async () => {
const [actual, message] = scopeEnum(await parsed.plain, 'always', ['foo']);
const expected = false;
expect(actual).toEqual(expected);
expect(message).toEqual('scope must be one of [foo]');
});
test('scope-enum with plain message should error forbidden enum', async () => {
const [actual, message] = scopeEnum(await parsed.plain, 'never', ['bar']);
const expected = false;
expect(actual).toEqual(expected);
expect(message).toEqual('scope must not be one of [bar]');
});
test('scope-enum with plain message should succeed forbidden enum', async () => {
const [actual] = scopeEnum(await parsed.plain, 'never', ['foo']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with superfluous scope should succeed enum', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'always', ['bar']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with superfluous scope and "never" should succeed', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'never', ['bar']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with superfluous scope and always should succeed empty enum', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'always', []);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with superfluous scope and never should succeed empty enum', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'never', []);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with empty scope and always should succeed empty enum', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'always', []);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with empty scope and always should succeed filled enum', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'always', ['foo']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with empty scope and never should succeed empty enum', async () => {
const [actual] = scopeEnum(await parsed.superfluous, 'never', []);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with multiple scopes should error on message with multiple scopes', async () => {
const [actual, message] = scopeEnum(await parsed.multiple, 'never', [
'bar',
'baz',
]);
const expected = false;
expect(actual).toEqual(expected);
expect(message).toEqual('scope must not be one of [bar, baz]');
});
test('scope-enum with multiple scopes should error on message with forbidden enum', async () => {
const [actual, message] = scopeEnum(await parsed.multiple, 'never', [
'bar',
'qux',
]);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with multiple scopes should error on message with superfluous scope', async () => {
const [actual] = scopeEnum(await parsed.multiple, 'never', ['bar']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with multiple scope should succeed on message with multiple scopes', async () => {
const [actual] = scopeEnum(await parsed.multiple, 'always', ['bar', 'baz']);
const expected = true;
expect(actual).toEqual(expected);
});
test('scope-enum with multiple scope with comma+space should succeed on message with multiple scopes', async () => {
const [actual] = scopeEnum(await parsed.multipleCommaSpace, 'always', [
'bar',
'baz',
]);
const expected = true;
expect(actual).toEqual(expected);
});