diff options
Diffstat (limited to 'node_modules/jest-snapshot/build/index.js')
-rw-r--r-- | node_modules/jest-snapshot/build/index.js | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/node_modules/jest-snapshot/build/index.js b/node_modules/jest-snapshot/build/index.js new file mode 100644 index 000000000..866f8b698 --- /dev/null +++ b/node_modules/jest-snapshot/build/index.js @@ -0,0 +1,161 @@ +/** + * 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. + * + * + */ +'use strict'; + + + + +const diff = require('jest-diff'); +const fileExists = require('jest-file-exists'); +const fs = require('fs'); +const path = require('path'); +const SnapshotState = require('./State');var _require = +require('./plugins');const addSerializer = _require.addSerializer,getSerializers = _require.getSerializers;var _require2 = + + + + + + +require('jest-matcher-utils');const EXPECTED_COLOR = _require2.EXPECTED_COLOR,ensureNoExpected = _require2.ensureNoExpected,matcherHint = _require2.matcherHint,RECEIVED_COLOR = _require2.RECEIVED_COLOR;var _require3 = +require('./utils');const SNAPSHOT_EXTENSION = _require3.SNAPSHOT_EXTENSION; + +const cleanup = (hasteFS, update) => { + const pattern = '\\.' + SNAPSHOT_EXTENSION + '$'; + const files = hasteFS.matchFiles(pattern); + const filesRemoved = files. + filter(snapshotFile => !fileExists( + path.resolve( + path.dirname(snapshotFile), + '..', + path.basename(snapshotFile, '.' + SNAPSHOT_EXTENSION)), + + hasteFS)). + + map(snapshotFile => { + if (update) { + fs.unlinkSync(snapshotFile); + } + }). + length; + + return { + filesRemoved }; + +}; + +const initializeSnapshotState = ( +testFile, +update, +testPath, +expand) => +new SnapshotState(testFile, update, testPath, expand); + +const toMatchSnapshot = function (received, testName) { + this.dontThrow && this.dontThrow();const + + currentTestName = this.currentTestName,isNot = this.isNot,snapshotState = this.snapshotState; + + if (isNot) { + throw new Error( + 'Jest: `.not` cannot be used with `.toMatchSnapshot()`.'); + + } + + if (!snapshotState) { + throw new Error('Jest: snapshot state must be initialized.'); + } + + const result = snapshotState.match(testName || currentTestName, received);const + pass = result.pass; + + if (pass) { + return { message: '', pass: true }; + } else {const + count = result.count,expected = result.expected,actual = result.actual; + + const expectedString = expected.trim(); + const actualString = actual.trim(); + const diffMessage = diff( + expectedString, + actualString, + { + aAnnotation: 'Snapshot', + bAnnotation: 'Received', + expand: snapshotState.expand }); + + + + const report = + () => `${RECEIVED_COLOR('Received value')} does not match ` + + `${EXPECTED_COLOR('stored snapshot ' + count)}.\n\n` + ( + diffMessage || + RECEIVED_COLOR('- ' + expectedString) + '\n' + + EXPECTED_COLOR('+ ' + actualString)); + + + const message = + () => matcherHint('.toMatchSnapshot', 'value', '') + '\n\n' + + report(); + + // Passing the the actual and expected objects so that a custom reporter + // could access them, for example in order to display a custom visual diff, + // or create a different error message + return { + actual: actualString, + expected: expectedString, + message, + name: 'toMatchSnapshot', + pass: false, + report }; + + } +}; + +const toThrowErrorMatchingSnapshot = function (received, expected) { + this.dontThrow && this.dontThrow();const + isNot = this.isNot; + + if (isNot) { + throw new Error( + 'Jest: `.not` cannot be used with `.toThrowErrorMatchingSnapshot()`.'); + + } + + ensureNoExpected(expected, '.toThrowErrorMatchingSnapshot'); + + let error; + + try { + received(); + } catch (e) { + error = e; + } + + if (error === undefined) { + throw new Error( + matcherHint('.toThrowErrorMatchingSnapshot', '() => {}', '') + '\n\n' + + `Expected the function to throw an error.\n` + + `But it didn't throw anything.`); + + } + + return toMatchSnapshot.call(this, error.message); +}; + +module.exports = { + EXTENSION: SNAPSHOT_EXTENSION, + SnapshotState, + addSerializer, + cleanup, + getSerializers, + initializeSnapshotState, + toMatchSnapshot, + toThrowErrorMatchingSnapshot };
\ No newline at end of file |