Skip to content

Commit 4b1df49

Browse files
authored
Support t.like() assertion
1 parent 0b5b2cf commit 4b1df49

6 files changed

+24
-1
lines changed

docs/rules/prefer-power-assert.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Translations: [Français](https://github.com/avajs/ava-docs/blob/master/fr_FR/re
55
- [`t.assert()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#assertvalue-message)
66
- [`t.deepEqual()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#deepequalvalue-expected-message)
77
- [`t.notDeepEqual()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#notdeepequalvalue-expected-message)
8+
- [`t.like()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#likevalue-selector-message)
89
- [`t.throws()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#throwsfn-expected-message)
910
- [`t.notThrows()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#notthrowsfn-message)
1011
- [`t.pass()`](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#passmessage)

rules/assertion-arguments.js

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ const expectedNbArguments = {
2828
min: 2,
2929
max: 3
3030
},
31+
like: {
32+
min: 2,
33+
max: 3
34+
},
3135
not: {
3236
min: 2,
3337
max: 3

test/assertion-arguments.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ ruleTester.run('assertion-arguments', rule, {
4242
testCase(false, 't.ifError(new Error(), \'message\');'),
4343
testCase(false, 't.is.skip(\'same\', \'same\', \'message\');'),
4444
testCase(false, 't.is(\'same\', \'same\', \'message\');'),
45+
testCase(false, 't.like({}, {}, \'message\');'),
4546
testCase(false, 't.not(\'not\', \'same\', \'message\');'),
4647
testCase(false, 't.notDeepEqual({}, {a: true}, \'message\');'),
4748
testCase(false, 't.notThrows(Promise.resolve(), \'message\');'),
@@ -67,6 +68,7 @@ ruleTester.run('assertion-arguments', rule, {
6768
testCase(false, 't.ifError(new Error());'),
6869
testCase(false, 't.is.skip(\'same\', \'same\');'),
6970
testCase(false, 't.is(\'same\', \'same\');'),
71+
testCase(false, 't.like({}, {});'),
7072
testCase(false, 't.not(\'not\', \'same\');'),
7173
testCase(false, 't.notDeepEqual({}, {a: true});'),
7274
testCase(false, 't.notThrows(Promise.resolve());'),
@@ -97,6 +99,7 @@ ruleTester.run('assertion-arguments', rule, {
9799
testCase('always', 't.not(\'not\', \'same\', \'message\');'),
98100
testCase('always', 't.deepEqual({}, {}, \'message\');'),
99101
testCase('always', 't.notDeepEqual({}, {a: true}, \'message\');'),
102+
testCase('always', 't.like({}, {}, \'message\');'),
100103
testCase('always', 't.throws(Promise.reject(), Error, \'message\');'),
101104
testCase('always', 't.notThrows(Promise.resolve(), \'message\');'),
102105
testCase('always', 't.regex(a, /a/, \'message\');'),
@@ -129,6 +132,7 @@ ruleTester.run('assertion-arguments', rule, {
129132
testCase('never', 't.not(\'not\', \'same\');'),
130133
testCase('never', 't.deepEqual({}, {});'),
131134
testCase('never', 't.notDeepEqual({}, {a: true});'),
135+
testCase('never', 't.like({}, {});'),
132136
testCase('never', 't.throws(Promise.reject());'),
133137
testCase('never', 't.throws(Promise.reject(), Error);'),
134138
testCase('never', 't.notThrows(Promise.resolve());'),
@@ -182,6 +186,7 @@ ruleTester.run('assertion-arguments', rule, {
182186
testCase(false, 't.not(\'not\');', tooFewError(2)),
183187
testCase(false, 't.deepEqual({});', tooFewError(2)),
184188
testCase(false, 't.notDeepEqual({});', tooFewError(2)),
189+
testCase(false, 't.like({});', tooFewError(2)),
185190
testCase(false, 't.throws();', tooFewError(1)),
186191
testCase(false, 't.notThrows();', tooFewError(1)),
187192
testCase(false, 't.regex(a);', tooFewError(2)),
@@ -206,6 +211,7 @@ ruleTester.run('assertion-arguments', rule, {
206211
testCase(false, 't.not(\'not\', \'same\', \'message\', \'extra argument\');', tooManyError(3)),
207212
testCase(false, 't.deepEqual({}, {}, \'message\', \'extra argument\');', tooManyError(3)),
208213
testCase(false, 't.notDeepEqual({}, {a: true}, \'message\', \'extra argument\');', tooManyError(3)),
214+
testCase(false, 't.like({}, {}, \'message\', \'extra argument\');', tooManyError(3)),
209215
testCase(false, 't.throws(Promise.reject(), Error, \'message\', \'extra argument\');', tooManyError(3)),
210216
testCase(false, 't.notThrows(Promise.resolve(), \'message\', \'extra argument\');', tooManyError(2)),
211217
testCase(false, 't.regex(a, /a/, \'message\', \'extra argument\');', tooManyError(3)),
@@ -227,6 +233,7 @@ ruleTester.run('assertion-arguments', rule, {
227233
testCase('always', 't.not(\'not\', \'same\');', missingError),
228234
testCase('always', 't.deepEqual({}, {});', missingError),
229235
testCase('always', 't.notDeepEqual({}, {a: true});', missingError),
236+
testCase('always', 't.like({}, {});', missingError),
230237
testCase('always', 't.throws(Promise.reject());', missingError),
231238
testCase('always', 't.throws(Promise.reject(), Error);', missingError),
232239
testCase('always', 't.notThrows(Promise.resolve());', missingError),
@@ -236,7 +243,6 @@ ruleTester.run('assertion-arguments', rule, {
236243
testCase('always', 't.skip.is(\'same\', \'same\');', missingError),
237244
testCase('always', 't.is.skip(\'same\', \'same\');', missingError),
238245
testCase('always', 't.snapshot(value);', missingError),
239-
240246
testCase('never', 't.pass(\'message\');', foundError),
241247
testCase('never', 't.fail(\'message\');', foundError),
242248
testCase('never', 't.truthy(\'unicorn\', \'message\');', foundError),
@@ -247,6 +253,7 @@ ruleTester.run('assertion-arguments', rule, {
247253
testCase('never', 't.not(\'not\', \'same\', \'message\');', foundError),
248254
testCase('never', 't.deepEqual({}, {}, \'message\');', foundError),
249255
testCase('never', 't.notDeepEqual({}, {a: true}, \'message\');', foundError),
256+
testCase('never', 't.like({}, {}, \'message\');', foundError),
250257
testCase('never', 't.throws(Promise.reject(), Error, \'message\');', foundError),
251258
testCase('never', 't.notThrows(Promise.resolve(), \'message\');', foundError),
252259
testCase('never', 't.regex(a, /a/, \'message\');', foundError),

test/prefer-power-assert.js

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ const allowedMethods = [
6565
'assert(foo)',
6666
'deepEqual(foo, bar)',
6767
'notDeepEqual(foo, bar)',
68+
'like(foo, bar)',
6869
'throws(block)',
6970
'notThrows(block)',
7071
'pass(foo)',

test/use-t-well.js

+9
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ ruleTester.run('use-t-well', rule, {
6969
testCase('t.try(tt => tt.pass(), 1, 2)'),
7070
testCase('t.try(\'title\', tt => tt.pass())'),
7171
testCase('t.try(\'title\', tt => tt.pass(), 1, 2)'),
72+
testCase('t.like'),
73+
testCase('t.like(v, v)'),
74+
testCase('t.like(actual, {}, "")'),
75+
testCase('t.like.skip(v, v)'),
7276
// Shouldn't be triggered since it's not a test file
7377
testCase('t.foo(a, a);', false),
7478
testCase('t.foo;', false)
@@ -205,6 +209,11 @@ ruleTester.run('use-t-well', rule, {
205209
{
206210
code: testCase('t.deepEqual.context(a, a);'),
207211
errors: [error('Unknown assertion method `.context`.')]
212+
},
213+
{
214+
code: testCase('t.lik(a, a);'),
215+
output: testCase('t.like(a, a);'),
216+
errors: [error('Misspelled `.like` as `.lik`.')]
208217
}
209218
]
210219
});

util.js

+1
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ const assertionMethodsNumberArguments = new Map([
105105
['falsy', 1],
106106
['ifError', 1],
107107
['is', 2],
108+
['like', 2],
108109
['not', 2],
109110
['notDeepEqual', 2],
110111
['notRegex', 2],

0 commit comments

Comments
 (0)