UNPKG

@opra/testing

Version:
36 lines (35 loc) 1.12 kB
"use strict"; 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`); } } } }