UNPKG

mocha-chai-jest-snapshot

Version:
59 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jest_snapshot_1 = require("jest-snapshot"); const jest_test_result_helper_1 = require("./utils/jest-test-result-helper"); const jest_reporters_lite_1 = require("./utils/jest-reporters-lite"); const helper_1 = require("./helper"); class SnapshotManager { constructor({ rootDir, snapshotResolver = null, }) { this.snapshotState = null; this.snapshotSummary = (0, jest_test_result_helper_1.makeEmptySnapshotSummary)(helper_1.snapshotOptions); this.context = null; this.testFile = ""; this.rootDir = rootDir; this.snapshotResolver = snapshotResolver; } onFileChanged() { if (!this.context) return; if (this.snapshotState !== null) this.saveSnap(); this.testFile = this.context.file; this.snapshotState = new jest_snapshot_1.SnapshotState(this.snapshotResolver.resolveSnapshotPath(this.testFile), helper_1.snapshotOptions); } setContext(context, chai) { if (!context.title || !context.file) return; this.context = context; this.chai = chai; if (this.testFile !== context.file) this.onFileChanged(); } assert(received, message) { if (!this.snapshotState || !this.context) return; const { actual, expected, key, pass } = this.snapshotState.match({ testName: this.context.fullTitle(), received, isInline: false, }); if (!pass) { this.chai.expect(actual.trim()).equals(expected ? expected.trim() : "", message || `Snapshot name: \`${key}\``); } } saveSnap() { if (!this.testFile || !this.snapshotState) return; const packedSnapshotState = (0, jest_test_result_helper_1.packSnapshotState)(this.snapshotState); (0, jest_test_result_helper_1.addSnapshotResult)(this.snapshotSummary, packedSnapshotState, this.testFile); this.testFile = ""; this.snapshotState = null; } report() { const outputs = (0, jest_reporters_lite_1.getSnapshotSummaryOutput)(this.rootDir, this.snapshotSummary); if (outputs.length > 1) console.log("\n" + outputs.join("\n")); } } exports.default = SnapshotManager; //# sourceMappingURL=manager.js.map