Skip to content

Commit 13d534b

Browse files
authored
test(matcher): Add a readable message with diff to the AST matcher (#210)
1 parent fbc62b1 commit 13d534b

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
"eslint": "^4.3.0",
4949
"flow-bin": "^0.53.1",
5050
"jest": "^20.0.4",
51+
"jest-diff": "^20.0.3",
52+
"jest-matcher-utils": "^20.0.3",
5153
"rimraf": "^2.3.2",
5254
"temp": "^0.8.1"
5355
},

tests/setupTestFramework.js

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,33 @@
1-
/*global jasmine*/
1+
/* eslint-env jest */
22

3-
var recast = require('recast');
3+
const recast = require('recast');
4+
const diff = require('jest-diff');
5+
const utils = require('jest-matcher-utils');
6+
7+
const matchers = {
8+
toEqualASTNode: function (received, expected) {
9+
if (!expected || typeof expected !== 'object') {
10+
throw new Error(
11+
'Expected value must be an object representing an AST node.\n' +
12+
'Got ' + expected + '(' + typeof expected + ') instead.'
13+
);
14+
}
415

5-
var matchers = {
6-
toEqualASTNode: function () {
716
return {
8-
compare: function (actual, expected) {
9-
if (!expected || typeof expected !== 'object') {
10-
throw new Error(
11-
'Expected value must be an object representing an AST node.\n' +
12-
'Got ' + expected + '(' + typeof expected + ') instead.'
13-
);
14-
}
17+
pass: recast.types.astNodesAreEquivalent(received, expected),
18+
message: () => {
19+
const diffString = diff(expected, received);
1520

16-
return {pass: recast.types.astNodesAreEquivalent(actual, expected)};
17-
}
21+
return (
22+
'Expected value to be (using ast-types):\n' +
23+
` ${utils.printExpected(expected)}\n` +
24+
'Received:\n' +
25+
` ${utils.printReceived(received)}` +
26+
(diffString ? `\n\nDifference:\n\n${diffString}` : '')
27+
);
28+
},
1829
};
19-
}
30+
},
2031
};
2132

22-
23-
jasmine.getEnv().beforeEach(function() {
24-
jasmine.addMatchers(matchers);
25-
});
33+
expect.extend(matchers);

0 commit comments

Comments
 (0)