-
Notifications
You must be signed in to change notification settings - Fork 49
/
assertion-message.js
121 lines (112 loc) · 5.08 KB
/
assertion-message.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
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
import test from 'ava';
import avaRuleTester from 'eslint-ava-rule-tester';
import rule from '../rules/assertion-message';
const ruleTester = avaRuleTester(test, {
env: {
es6: true
}
});
const missingError = [{
ruleId: 'assertion-message',
message: 'Expected an assertion message, but found none.'
}];
const foundError = [{
ruleId: 'assertion-message',
message: 'Expected no assertion message, but found one.'
}];
const header = `const test = require('ava');`;
function testCase(option, content, errors, useHeader) {
const testFn = `
test(t => {
${content}
});
`;
return {
errors: errors || [],
options: [option],
code: (useHeader === false ? '' : header) + testFn
};
}
ruleTester.run('assertion-message', rule, {
valid: [
testCase('always', `t.pass('message');`),
testCase('always', `t.fail('message');`),
testCase('always', `t.truthy('unicorn', 'message');`),
testCase('always', `t.falsy('unicorn', 'message');`),
testCase('always', `t.true(true, 'message');`),
testCase('always', `t.false(false, 'message');`),
testCase('always', `t.is('same', 'same', 'message');`),
testCase('always', `t.not('not', 'same', 'message');`),
testCase('always', `t.deepEqual({}, {}, 'message');`),
testCase('always', `t.notDeepEqual({}, {a: true}, 'message');`),
testCase('always', `t.throws(Promise.reject(), 'message');`),
testCase('always', `t.notThrows(Promise.resolve(), 'message');`),
testCase('always', `t.regex(a, /a/, 'message');`),
testCase('always', `t.notRegex(a, /a/, 'message');`),
testCase('always', `t.ifError(new Error(), 'message');`),
testCase('always', `t.skip.is('same', 'same', 'message');`),
testCase('always', `t.is.skip('same', 'same', 'message');`),
testCase('always', `t.plan('a', 'b', 'c', 'd', 'message');`),
testCase('always', `t.end('a', 'b', 'c', 'd', 'message');`),
// shouldn't be triggered since it's not a test file
testCase('always', `t.true(true);`, [], false),
testCase('never', `t.pass();`),
testCase('never', `t.fail();`),
testCase('never', `t.truthy('unicorn');`),
testCase('never', `t.falsy('unicorn');`),
testCase('never', `t.true(true);`),
testCase('never', `t.false(false);`),
testCase('never', `t.is('same', 'same');`),
testCase('never', `t.not('not', 'same');`),
testCase('never', `t.deepEqual({}, {});`),
testCase('never', `t.notDeepEqual({}, {a: true});`),
testCase('never', `t.throws(Promise.reject());`),
testCase('never', `t.notThrows(Promise.resolve());`),
testCase('never', `t.regex(a, /a/);`),
testCase('never', `t.notRegex(a, /a/);`),
testCase('never', `t.ifError(new Error());`),
testCase('never', `t.skip.is('same', 'same');`),
testCase('never', `t.is.skip('same', 'same');`),
testCase('never', `t.plan('a', 'b', 'c', 'd');`),
testCase('never', `t.end('a', 'b', 'c', 'd');`),
// shouldn't be triggered since it's not a test file
testCase('never', `t.true(true, 'message');`, [], false)
],
invalid: [
testCase('always', `t.pass();`, missingError),
testCase('always', `t.fail();`, missingError),
testCase('always', `t.truthy('unicorn');`, missingError),
testCase('always', `t.falsy('unicorn');`, missingError),
testCase('always', `t.true(true);`, missingError),
testCase('always', `t.false(false);`, missingError),
testCase('always', `t.is('same', 'same');`, missingError),
testCase('always', `t.not('not', 'same');`, missingError),
testCase('always', `t.deepEqual({}, {});`, missingError),
testCase('always', `t.notDeepEqual({}, {a: true});`, missingError),
testCase('always', `t.throws(Promise.reject());`, missingError),
testCase('always', `t.notThrows(Promise.resolve());`, missingError),
testCase('always', `t.regex(a, /a/);`, missingError),
testCase('always', `t.notRegex(a, /a/);`, missingError),
testCase('always', `t.ifError(new Error());`, missingError),
testCase('always', `t.skip.is('same', 'same');`, missingError),
testCase('always', `t.is.skip('same', 'same');`, missingError),
testCase('always', `t.pass();`, missingError),
testCase('never', `t.pass('message');`, foundError),
testCase('never', `t.fail('message');`, foundError),
testCase('never', `t.truthy('unicorn', 'message');`, foundError),
testCase('never', `t.falsy('unicorn', 'message');`, foundError),
testCase('never', `t.true(true, 'message');`, foundError),
testCase('never', `t.false(false, 'message');`, foundError),
testCase('never', `t.is('same', 'same', 'message');`, foundError),
testCase('never', `t.not('not', 'same', 'message');`, foundError),
testCase('never', `t.deepEqual({}, {}, 'message');`, foundError),
testCase('never', `t.notDeepEqual({}, {a: true}, 'message');`, foundError),
testCase('never', `t.throws(Promise.reject(), 'message');`, foundError),
testCase('never', `t.notThrows(Promise.resolve(), 'message');`, foundError),
testCase('never', `t.regex(a, /a/, 'message');`, foundError),
testCase('never', `t.notRegex(a, /a/, 'message');`, foundError),
testCase('never', `t.ifError(new Error(), 'message');`, foundError),
testCase('never', `t.skip.is('same', 'same', 'message');`, foundError),
testCase('never', `t.is.skip('same', 'same', 'message');`, foundError)
]
});