assertthat
Version:
assertthat provides fluent TDD.
31 lines (30 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertMapIsAtLeastMap = void 0;
const errors_1 = require("../../errors");
const compareMaps_1 = require("../../comparisons/forMaps/compareMaps");
const dispel_1 = require("../../dispel/dispel");
const findMapDiffOmissions_1 = require("../../diffs/forMaps/findMapDiffOmissions");
const EqualDiff_1 = require("../../diffs/EqualDiff");
const prettyPrint_1 = require("../../prettyPrint/typeAware/prettyPrint");
const prettyPrintDiff_1 = require("../../prettyPrint/typeAware/prettyPrintDiff");
const defekt_1 = require("defekt");
const assertMapIsAtLeastMap = function (actual, expected) {
const dispelledActual = (0, dispel_1.dispel)(actual);
const dispelledExpected = (0, dispel_1.dispel)(expected);
const diff = (0, compareMaps_1.compareMaps)(dispelledActual, dispelledExpected);
if ((0, EqualDiff_1.isEqualDiff)(diff)) {
return (0, defekt_1.value)();
}
const diffWithOnlyOmissions = (0, findMapDiffOmissions_1.findMapDiffOmissions)(diff);
if (diffWithOnlyOmissions.cost === 0) {
return (0, defekt_1.value)();
}
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The expected map is not entirely contained in the actual map.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual),
expected: `To entirely contain:\n${(0, prettyPrint_1.prettyPrint)(dispelledExpected)}`,
diff: `The following sub-map shows relevant changes between actual and expected:\n${(0, prettyPrintDiff_1.prettyPrintDiff)(diffWithOnlyOmissions)}`
}));
};
exports.assertMapIsAtLeastMap = assertMapIsAtLeastMap;