UNPKG

mocker-data-generator

Version:

A simplified way to generate mock data, builds using a simple schema and with the FakerJs

406 lines (402 loc) 16.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var ava_1 = require("ava"); var __1 = require(".."); (0, ava_1.default)('Should return an new instance of mocker', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { t.deepEqual((0, __1.default)(), new __1.Mocker()); return [2 /*return*/]; }); }); }); (0, ava_1.default)('Should iterate root level too with fields in models', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var length, expectedResult, user, db; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: length = 1; expectedResult = { user: ['firstName'] }; user = { static: 'firstName' }; return [4 /*yield*/, (0, __1.default)().schema('user', user, length).build()]; case 1: db = _a.sent(); t.deepEqual(db, expectedResult); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Virtuals should be eliminated in the final object and can be accesible during generation', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var model, expectedResult, db; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: model = { exampleVirtual: { incrementalId: 0, virtual: true }, id: { function: function () { return this.object.exampleVirtual; } }, deep: { more: { field: { static: 'im here', virtual: true } } }, deep2: { more: { field: { static: 'im here' } } } }; expectedResult = { id: 0, deep2: { more: { field: 'im here' } } }; return [4 /*yield*/, (0, __1.default)().schema('situation', model, 1).build()]; case 1: db = _a.sent(); t.deepEqual(db.situation[0], expectedResult); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should iterate over more complex levels (deeper & function used...)', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var model, expectedResult, db; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: model = { name: { firstName: { static: 'firstName' }, lastName: { static: 'lastName' }, much: { deeper: { function: function () { return (this.object.name.firstName + ' ' + this.object.name.lastName); } }, more: { deeper: { function: function () { return (this.object.name.firstName + ' ' + this.object.name.lastName); } }, level: { deeper: { function: function () { return (this.object.name.firstName + ' ' + this.object.name.lastName); } }, awesome: { deeper: { function: function () { return (this.object.name.firstName + ' ' + this.object.name.lastName); } }, deeper2: { function: function () { return (this.object.name.firstName + ' ' + this.object.name.lastName); } } } } } } } }; expectedResult = { name: { firstName: 'firstName', lastName: 'lastName', much: { deeper: 'firstName lastName', more: { deeper: 'firstName lastName', level: { deeper: 'firstName lastName', awesome: { deeper: 'firstName lastName', deeper2: 'firstName lastName' } } } } } }; return [4 /*yield*/, (0, __1.default)().schema('situation', model, 1).build()]; case 1: db = _a.sent(); t.deepEqual(db.situation[0], expectedResult); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should work with conditional keys', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var conditional, expectedResult, db; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: conditional = { condition: { static: 'a' }, 'object.condition==="a",a': { static: 'conditionLinkedToA' }, 'object.condition==="b",b': { static: 'conditionLinkedToB' } }; expectedResult = { condition: 'a', a: 'conditionLinkedToA' }; return [4 /*yield*/, (0, __1.default)().schema('situation', conditional, 1).build()]; case 1: db = _a.sent(); t.deepEqual(db.situation[0], expectedResult); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should work with conditional keys II', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var conditional, user, email, db; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: conditional = { condition: { values: ['email', 'user'] }, 'object.condition==="email",show': { static: 'email' }, 'object.condition==="user",show': { static: 'user' }, 'object.condition==="email",email': { hasOne: 'emails' }, 'object.condition==="user",user': { hasOne: 'users' } }; user = { static: 'name.findName' }; email = { static: 'internet.email' }; return [4 /*yield*/, (0, __1.default)() .schema('users', user, 2) .schema('emails', email, 2) .schema('situation', conditional, 3) .build()]; case 1: db = _a.sent(); t.true(true); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should not affect init values to next entity', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var length, request, request2, db; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: length = 10; request = { type: { values: ['kitty', 'pitxi', 'txuri'] } }; request2 = { type: { static: 'staticValue' } }; return [4 /*yield*/, (0, __1.default)() .schema('request', request, { uniqueField: 'type' }) .schema('request2', request2, 10) .build()]; case 1: db = _a.sent(); t.notDeepEqual(db.request, db.request2); db.request2.forEach(function (r2) { db.request.forEach(function (r) { t.notDeepEqual(r2, r); }); }); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should generate more entities', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var length, model1, model2, data; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: length = 10; model1 = { request: { id: { static: 0 }, title: { static: 'hello im a cat' }, number: { static: 0 } } }; model2 = { request: { id: { static: 0 }, title: { static: 'hello im a cat' }, number: { static: 0 } } }; return [4 /*yield*/, (0, __1.default)() .schema('act', model1, length) .schema('act2', model2, length) .build()]; case 1: data = _a.sent(); t.true(Object.keys(data).length === 2); t.deepEqual(Object.keys(data), Array('act', 'act2')); t.true(data.act.length === length); t.true(data.act2.length === length); data.act.forEach(function (d) { t.true(Object.keys(d).length === Object.keys(model1).length); t.deepEqual(Object.keys(d), Object.keys(model1)); t.deepEqual(Object.keys(d.request), Object.keys(model1.request)); }); data.act2.forEach(function (d) { t.true(Object.keys(d).length === Object.keys(model2).length); t.deepEqual(Object.keys(d), Object.keys(model2)); t.deepEqual(Object.keys(d.request), Object.keys(model2.request)); }); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should uniqueField works', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var cat, cat2, result, data; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: cat = { name: ['txuri', 'pitxi', 'kitty'] }; cat2 = { name: ['txuri', 'pitxi', 'kitty'] }; result = [{ name: 'txuri' }, { name: 'pitxi' }, { name: 'kitty' }]; return [4 /*yield*/, (0, __1.default)() .schema('cat', cat, { uniqueField: 'name' }) .schema('cat2', cat2, { uniqueField: 'name' }) .build()]; case 1: data = _a.sent(); t.deepEqual(data.cat, data.cat2); t.deepEqual(data.cat, result); t.deepEqual(data.cat2, result); return [2 /*return*/]; } }); }); }); (0, ava_1.default)('Should max works', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var cat, data; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: cat = { name: { values: ['txuri', 'pitxi', 'kitty'] } }; return [4 /*yield*/, (0, __1.default)() .schema('cat', cat, { max: 10 }) .schema('cat2', cat, { max: 40 }) .build()]; case 1: data = _a.sent(); t.true(data.cat.length <= 10); t.true(data.cat2.length <= 40); return [2 /*return*/]; } }); }); }); /* test('Should max and min works', async t => { let cat = { name: ['txuri', 'pitxi', 'kitty'] } let data = await mocker() .schema('cat', cat, { min: 5, max: 10 }) .schema('cat2', cat, { min: 10, max: 40 }) .build() t.true(data.cat.length <= 10) t.true(data.cat.length >= 5) t.true(data.cat2.length <= 40) t.true(data.cat2.length >= 10) }) test('Should generate correctly with 2 ways of uniqueField', function(done) { var cat = { name: ['txuri', 'pitxi', 'kitty'] }; var cat2 = { name: { values: ['txuri', 'pitxi', 'kitty'] } }; var result = [ { name: 'txuri' }, { name: 'pitxi' }, { name: 'kitty' } ] var m = mocker() .schema('cat', cat, {uniqueField: 'name'}) .schema('cat2', cat2, {uniqueField: 'name'}) .build(function(data){ try { expect(data.cat) .to.deep.equal(data.cat2) .to.deep.equal(result) .to.not.be.undefined .to.not.be.null done() } catch (x) { done(x) } }) })*/ (0, ava_1.default)('Should be awesome', function (t) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { t.true(true); return [2 /*return*/]; }); }); });