efate
Version:
javascript test fixture generator. Autofixturejs 2.0
47 lines (46 loc) • 2.06 kB
JavaScript
;
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;