chai-callslike
Version:
A simple sinon-chai assertion to validate many aspects of stub calls
42 lines (41 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.compareDeep = void 0;
const print_1 = require("./print");
const colors_1 = require("./colors");
const match_1 = require("./match");
const must_go_deep_1 = require("./must-go-deep");
const create_comparable_entries_1 = require("./create-comparable-entries");
function compareDeep(actual, expected, tab, references) {
let deepResult = '';
const entries = create_comparable_entries_1.createComparableEntries(actual, expected);
const prefix = `\n${tab}${colors_1.lack('...')}\n${tab}`;
for (const [key, { actualInfo, expectedInfo }] of entries) {
if (actualInfo) {
if (expectedInfo) {
const actualValue = actualInfo.value;
const expectedValue = expectedInfo.value;
if (must_go_deep_1.mustGoDeep(actualValue, expectedValue, references)) {
const compareResult = compareDeep(actualValue, expectedValue, `${tab} `, references);
if (compareResult) {
deepResult += `${prefix}${key}: {${compareResult},\n${tab}}`;
}
}
else {
const matchResult = match_1.match(actualValue, expectedValue);
if (matchResult) {
deepResult += `${prefix}${key}: ${matchResult},`;
}
}
}
else {
deepResult += `${prefix}${key}: ${print_1.printComparison(print_1.printValue(actualInfo.value), colors_1.lack('not expected!'))},`;
}
}
else {
deepResult += `${prefix}${key}: ${print_1.printComparison(colors_1.lack('not informed!'), print_1.printValue(expectedInfo.value))},`;
}
}
return deepResult;
}
exports.compareDeep = compareDeep;