efate
Version:
javascript test fixture generator. Autofixturejs 2.0
52 lines (51 loc) • 2.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const field_1 = __importDefault(require("./field"));
const fixture_factory_1 = require("./fixture-factory");
const customEmailExtension = {
emailWithDomain: (fieldName, domainName) => (increment) => new field_1.default(fieldName, `email${increment}@${domainName}`),
};
const ssnExtension = {
asSSN: (fieldName, [startValue]) => {
return (increment) => {
return new field_1.default(fieldName, `123-45-${1000 * startValue + increment}`);
};
},
};
describe('when extending with new field generators', () => {
it('should provide the extended build as an option when creating the fixture', () => {
const defineFixture = (0, fixture_factory_1.defineFixtureFactory)(ssnExtension);
const userFixture = defineFixture((t) => {
t.ssn.asSSN(2);
t.name.asString();
t.email.asString();
});
const user = userFixture.create();
(0, chai_1.expect)(user.ssn).to.eql('123-45-2001');
(0, chai_1.expect)(user.name).to.eql('name1');
});
it('should allow extension to be optional', () => {
const defineFixture = (0, fixture_factory_1.defineFixtureFactory)();
const userFixture = defineFixture((t) => {
t.name.asString();
t.ssn.asString();
t.email.asString();
});
const user = userFixture.create();
(0, chai_1.expect)(user.name).eql('name1');
(0, chai_1.expect)(user.ssn).eql('ssn1');
});
it('should use all extenstions passed to it', () => {
const defineFixture = (0, fixture_factory_1.defineFixtureFactory)(ssnExtension, customEmailExtension);
const userFixture = defineFixture((t) => {
t.ssn.asSSN(2);
t.email.emailWithDomain('example.com');
});
const user = userFixture.create();
(0, chai_1.expect)(user.email).to.eql('email1@example.com');
});
});