aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-snapshot/build/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jest-snapshot/build/index.js')
-rw-r--r--node_modules/jest-snapshot/build/index.js161
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