UNPKG

efate

Version:

javascript test fixture generator. Autofixturejs 2.0

47 lines (46 loc) 2.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.defineFixture = exports.createFixtureFactory = exports.defineFixtureFactory = void 0; const debug_1 = __importDefault(require("debug")); const fixture_1 = __importDefault(require("./fixture")); const field_generator_1 = require("./property-builders/field-generator"); const debug = (0, debug_1.default)('efate:fixture-factory'); function defineFixtureFactory(...extensions) { return (defineFields) => { const builders = Object.assign({}, field_generator_1.fieldTypeGenerators, ...extensions); const buildersList = []; let extendedFixture = []; const proxy = new Proxy({}, { get(_, property) { if (property === 'extends') { debug('extending another fixture'); return (...fixture) => { extendedFixture = fixture; }; } return Object.keys(builders).reduce((obj, key) => { const addBuilder = (...args) => { buildersList.push(builders[key](property, args)); }; obj[key] = addBuilder; return obj; }, {}); }, }); defineFields(proxy); return new fixture_1.default(buildersList, extendedFixture); }; } exports.defineFixtureFactory = defineFixtureFactory; function createFixtureFactory(...extensions) { console.warn('Deprecation Notice! createFixtureFactory has been renamed to defineFixtureFactory. createFixtureFactory function will be removed in future major versions'); return defineFixtureFactory(...extensions); } exports.createFixtureFactory = createFixtureFactory; function defineFixture(defineFields) { return defineFixtureFactory()(defineFields); } exports.defineFixture = defineFixture;