@opra/testing
Version:
Opra testing package
33 lines (32 loc) • 964 B
JavaScript
import { expect } from 'expect';
export function objectMatches(received, expected) {
_objectMatches(received, expected, '');
}
function _objectMatches(received, expected, path) {
if (typeof received !== typeof expected)
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 {
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 {
expect(rv).toEqual(ev);
}
catch {
throw new Error(`Property "${k}" does not match`);
}
}
}
}