UNPKG

mockzilla

Version:

A mocking toolkit leveraging the power of TypeScript to enhance your jest experience.

34 lines (33 loc) 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mockAssimilate = void 0; const error_1 = require("./error"); const utils_1 = require("./utils"); const deepMock_1 = require("./deepMock"); function mockAssimilate(instance, name, { mock: mockKeys, whitelist }) { const [proxy, mock] = (0, deepMock_1.deepMock)(name); const properties = (0, utils_1.getAllProperties)(instance); // Validate, that every mock is in properties for (const key of mockKeys) { if (!properties.includes(key)) throw new error_1.MockzillaError(`Property "${key}" does not exist on ${name}, so it can't be assimilated`); else if (typeof instance[key] !== "function") throw new error_1.MockzillaError(`Property "${key}" on ${name} is not a function, so it can't be assimilated`); } // Validate, that every whitelist item is in properties if (whitelist) { const key = whitelist.find((property) => !properties.includes(property)); if (key) throw new error_1.MockzillaError(`Property "${key}" does not exist on ${name}, so it can't be whitelisted`); } for (const property of properties) { if (mockKeys.includes(property)) { mock[property].mockAllowMethod(); instance[property] = proxy[property]; } else if (whitelist && !whitelist.includes(property)) (0, utils_1.denyPropertyAccess)(instance, property); } return mock; } exports.mockAssimilate = mockAssimilate;