node-model-factory

2.0.3 • Public • Published

node-model-factory

A laravel-like model factory using faker.js

Maintainability

Install

Node dependencies

npm install node-model-factory

Initializing

node-model-factory includes the latest 4.1 version of faker.js. It is injected as the first agument of your definition closure.

API

Factory::define(name, closure)

Factory::times(amount)

Factory::make(name)

Example

./my-factories/factory.js

import Factory from 'node-model-factory'
 
//Define your models...
let factory = new Factory();
 
factory.define('City', (faker) => {
    return {
        city: faker.address.city(),
        state: faker.address.stateAbbr()
    }
});
 
// include other models (see hometown)
factory.define('Person', (faker, factory) => {
    return {
        first_name: faker.name.firstName(),
        last_name: faker.name.lastName(),
        hometown: factory.make('City')
    }
});
 
export default factory;

Sample Use Cases

Make One

import factory from './my-factories/factory.js'
 
// Make 1 Person
var person = factory.make('Person');
 
console.log(person);
/*
{
  first_name: "Bob",
  last_name: "Smith",
  hometown: {
    city: "Wilmington"
    state: "NC"
  }
}
*/

Make Several

import factory from './my-factories/factory.js'
 
// Make 1 Person
var people = factory.times(2).make('Person');
 
console.log(people);
/*
[
  {
    first_name: "Bob",
    last_name: "Smith",
    hometown: {
      city: "Wilmington"
      state: "NC"
    }
  },
  {
    first_name: "Jane",
    last_name: "Doe",
    hometown: {
      city: "Charleston"
      state: "SC"
    }
  }
]
*/

Override Attributes

import factory from './my-factories/factory.js'
 
// Make 1 Person
var person = factory.make('Person', {
  first_name: "John"
});
 
console.log(person);
/*
{
  first_name: "John", //first name is 'John' and not random from faker
  last_name: "Smith",
  hometown: {
    city: "Wilmington"
    state: "NC"
  }
}
*/

Not using Faker.js

In case you want to use another library, just include it in the constructor when you initialize the Factory class.

import Factory from 'node-model-factory'
import randomLib from './random-lib.js'
 
let factory = new Factory(randomLib);
 
factory.define('City', (randomLib) => {
  // randomLib is in scope as the first 
  // argument of this closure
})
 

Package Sidebar

Install

npm i node-model-factory

Weekly Downloads

1

Version

2.0.3

License

MIT

Unpacked Size

6.32 kB

Total Files

5

Last publish

Collaborators

  • jabullard