UNPKG

chai-callslike

Version:

A simple sinon-chai assertion to validate many aspects of stub calls

42 lines (41 loc) 1.88 kB
"use strict"; 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;