@opra/testing
Version:
Opra testing package
36 lines (35 loc) • 1.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.objectMatches = objectMatches;
const expect_1 = require("expect");
function objectMatches(received, expected) {
_objectMatches(received, expected, '');
}
function _objectMatches(received, expected, path) {
if (typeof received !== typeof expected)
(0, expect_1.expect)(typeof received).toStrictEqual('object');
const keys = Object.keys(expected);
for (const k of keys) {
const rv = received[k];
const ev = expected[k];
if (ev instanceof RegExp) {
try {
(0, expect_1.expect)(rv).toMatch(ev);
}
catch {
throw new Error(`Property "${k}" does not match`);
}
}
else if (ev && typeof ev === 'object') {
_objectMatches(rv, ev, path ? path + '.' + k : k);
}
else {
try {
(0, expect_1.expect)(rv).toEqual(ev);
}
catch {
throw new Error(`Property "${k}" does not match`);
}
}
}
}