UNPKG

assertthat

Version:
31 lines (30 loc) 1.67 kB
"use strict"; 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;