@joxnathan/mock-randomizer
TypeScript icon, indicating that this package has built-in type declarations

0.2.22 • Public • Published

Mock Randomizer

fills a structure with randomized data to mock a service or other model provider. number of items in a collection of objects can also be random.

Installation

npm install @joxnathan/mock-randomizer

Usage

import mock from '@joxnathan/mock-randomizer';

this.history.GetChangeHistory = () => Promise.resolve(
  mock.filledList({
    Id: 'guid',
    TimeStamp: 'date:now:now',
    User: { Id: 'number:100:501', Name: 'string:8', Email: 'email' },
    Data: [{
      Id: 'number:1000:2001',
      ChangeType: 'choose:Insert,Update,Delete',
      TableName: 'choose:Claimant,Processor,Advisor,Supervisor,Client,Vendor',
      RecordId: 'number:10:41',
      FieldName: 'choose:Id,Name,Address,City,State,Zip',
      PrevValue: '{}',
      CurrValue: '{}'
    }]
  }, { min: 11, max: 75 }, { Data: { max: 4 } }).map(entry => {
    const getData = () => JSON.stringify(mock.filledObject({
      Id: 'guid',
      version: 'ver',
      Name: '',
      Value: '',
      FullName: 'fullname',
      FirstName: 'firstname',
      LastName: 'lastname',
      Company: 'company',
      Street: 'street',
      City: 'city',
      State: 'state',
      Zip: 'zip',
      Tz: 'tz',
      Phone: 'phone',
      Email: 'email',
      Book: 'title',
      TypeSet: 'typeset',
      Locations: [],
      HasApproval: 'boolean',
      CreatedOn: 'date:today-12M:now-1M',
      CreatedBy: '',
      ModifiedOn: 'date:today-7d:now',
      ModifiedBy: ''
    }, { Locations: { min: 1, max: 3 } }));
    for (const data of entry.Data || []) {
      const vals = {
        prev: ['Delete', 'Update'].includes(data.ChangeType) ? getData() : undefined,
        curr: ['Insert', 'Update'].includes(data.ChangeType) ? getData() : undefined
      };
      data.PrevValue = vals.prev;
      data.CurrValue = vals.curr;
    }
    return entry;
  })
);

RunKit Usage

const mock = require("@joxnathan/mock-randomizer").default;
const getChangeHistory = () =>
  mock.filledList({
    Id: 'guid',
    TimeStamp: 'date:now:now',
    User: { Id: 'number:100:501', Name: 'string:8', Email: 'email' },
    Data: [{
      Id: 'number:1000:2001',
      ChangeType: 'choose:Insert,Update,Delete',
      TableName: 'choose:Claimant,Processor,Advisor,Supervisor,Client,Vendor',
      RecordId: 'number:10:41',
      FieldName: 'choose:Id,Name,Address,City,State,Zip',
      PrevValue: '{}',
      CurrValue: '{}'
    }]
  }, { min: 11, max: 75 }, { Data: { max: 4 } }).map(entry => {
    const getData = () => JSON.stringify(mock.filledObject({
      Id: 'guid',
      version: 'ver',
      Name: '',
      Value: 'string:4:6:upper',
      FullName: 'fullname',
      FirstName: 'firstname',
      LastName: 'lastname',
      Company: 'company',
      Street: 'street',
      City: 'city',
      State: 'state',
      Zip: 'zip',
      Tz: 'tz',
      Phone: 'phone',
      Email: 'email',
      Book: 'title',
      TypeSet: 'typeset',
      Locations: [],
      HasApproval: 'boolean',
      CreatedOn: 'date:today-12M:now-1M',
      CreatedBy: '',
      ModifiedOn: 'date:today-7d:now',
      ModifiedBy: ''
    }, { Locations: { min: 1, max: 3 } }));
    for (const data of entry.Data || []) {
      const vals = {
        prev: ['Delete', 'Update'].includes(data.ChangeType) ? getData() : undefined,
        curr: ['Insert', 'Update'].includes(data.ChangeType) ? getData() : undefined
      };
      data.PrevValue = vals.prev;
      data.CurrValue = vals.curr;
    }
    return entry;
  });
const hist = getChangeHistory();
console.log({ hist });

Potential Upcoming Features

1. DSL 'email:[props]' - add option to specify that the value relies on another.
2. DSL 'string:2 number:1:4 number:1:10 number boolean' - string the dsl commands together in a single property. (not really too sure about this one)

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

Package Sidebar

Install

npm i @joxnathan/mock-randomizer

Weekly Downloads

4

Version

0.2.22

License

ISC

Unpacked Size

206 kB

Total Files

75

Last publish

Collaborators

  • joxnathan