mocha-chai-jest-snapshot
Version:
provides snapshot testing like jest
59 lines • 2.38 kB
JavaScript
"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