forked from jestjs/jest
/
test_reconciler.test.js
101 lines (85 loc) 路 3.55 KB
/
test_reconciler.test.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
/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @flow
*/
const fs = require('fs');
const path = require('path');
const TestReconciler = require('../test_reconciler');
const fixtures = path.resolve(__dirname, '../../../../fixtures');
const reconcilerWithFile = (file: string): TestReconciler => {
const parser = new TestReconciler();
const exampleJSON = fs.readFileSync(`${fixtures}/failing_jsons/${file}`);
const json = JSON.parse(exampleJSON.toString());
parser.updateFileWithJestStatus(json);
return parser;
};
describe('Test Reconciler', () => {
let parser: TestReconciler;
const dangerFilePath =
'/Users/orta/dev/projects/danger/' +
'danger-js/source/ci_source/_tests/_travis.test.js';
describe('for a simple project', () => {
it('passes a passing method', () => {
parser = reconcilerWithFile('failing_jest_json.json');
const testName = 'does not validate without josh';
const status: any = parser.stateForTestAssertion(
dangerFilePath,
testName,
);
expect(status.status).toEqual('KnownSuccess');
expect(status.line).toBeNull();
});
it('fails a failing method in the same file', () => {
parser = reconcilerWithFile('failing_jest_json.json');
const testName =
'validates when all Travis environment' +
' vars are set and Josh K says so';
const status: any = parser.stateForTestAssertion(
dangerFilePath,
testName,
);
expect(status.status).toEqual('KnownFail');
expect(status.line).toEqual(12);
const errorMessage = 'Expected value to be falsy, instead received true';
expect(status.terseMessage).toEqual(errorMessage);
expect(status.shortMessage).toEqual(`Error: expect(received).toBeFalsy()
Expected value to be falsy, instead received
true`);
});
});
});
describe('Terse Messages', () => {
it('handles shrinking a snapshot message', () => {
const parser = reconcilerWithFile('failing_expects.json');
const file =
'/Users/orta/dev/projects/artsy/js/' +
'libs/jest-snapshots-svg/src/_tests/example.test.ts';
const terseForTest = name => parser.stateForTestAssertion(file, name);
let message = 'Expected value to equal: 2, Received: 1';
let testName = 'numbers';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
message = 'Expected value to equal: 2, Received: "1"';
testName = 'string to numbers: numbers';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
message = 'Expected value to equal: {"a": 2}, Received: {}';
testName = 'objects';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
message = 'Snapshot has changed';
testName = 'snapshots';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
message = 'Expected value to be greater than: 3, Received: 2';
testName = 'greater than';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
message = 'Expected value to be falsy, instead received 2';
testName = 'falsy';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
message = 'Expected value to be truthy, instead received null';
testName = 'truthy';
expect(terseForTest(testName)).toHaveProperty('terseMessage', message);
});
});