UNPKG

mockzilla

Version:

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

31 lines (30 loc) 1.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.whitelistPropertyAccess = exports.getAllProperties = exports.denyPropertyAccess = void 0; const error_1 = require("./error"); function denyPropertyAccess(instance, property) { Object.defineProperty(instance, property, { get() { throw new error_1.MockzillaError(`Property "${property}" was expected to be left ontouched`); }, set() { throw new error_1.MockzillaError(`Property "${property}" was expected to be left ontouched`); }, }); } exports.denyPropertyAccess = denyPropertyAccess; function getAllProperties(obj) { const properties = new Set(); for (let current = obj; Object.getPrototypeOf(current); current = Object.getPrototypeOf(current)) Object.getOwnPropertyNames(current).forEach((item) => properties.add(item)); properties.delete("constructor"); return [...properties.keys()]; } exports.getAllProperties = getAllProperties; function whitelistPropertyAccess(instance, ...whitelist) { for (const property of getAllProperties(instance)) { if (!whitelist.includes(property)) denyPropertyAccess(instance, property); } } exports.whitelistPropertyAccess = whitelistPropertyAccess;