/
getPrettyPrint.js
48 lines (41 loc) · 1.45 KB
/
getPrettyPrint.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
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
'use strict';
import type {OptionsReceived, Plugins} from 'types/PrettyFormat';
const diff = require('jest-diff');
const prettyFormat = require('../');
const getPrettyPrint = (plugins: Plugins) =>
function(received: any, expected: any, options?: OptionsReceived) {
const prettyFormatted = prettyFormat(received, {plugins, ...options});
const pass = prettyFormatted === expected;
const message = pass
? () =>
this.utils.matcherHint('.not.toBe') +
'\n\n' +
`Expected value to not be:\n` +
` ${this.utils.printExpected(expected)}\n` +
`Received:\n` +
` ${this.utils.printReceived(prettyFormatted)}`
: () => {
const diffString = diff(expected, prettyFormatted, {
expand: this.expand,
});
return (
this.utils.matcherHint('.toBe') +
'\n\n' +
`Expected value to be:\n` +
` ${this.utils.printExpected(expected)}\n` +
`Received:\n` +
` ${this.utils.printReceived(prettyFormatted)}` +
(diffString ? `\n\nDifference:\n\n${diffString}` : '')
);
};
return {actual: prettyFormatted, message, pass};
};
export default getPrettyPrint;