assembly_line

0.1.2 • Public • Published

Assembly Line

Simple, reusable javascript object factories – great for writing tests.

Usage

Basic usage:

var AssemblyLine = require('assembly_line');
 
// define a factory
var user = AssemblyLine.factory(Object, {
  firstName: 'Jane',
  lastName: 'Smith',
  email: 'jsmith@example.com'
})
 
// call the factory to create an instance
var jsmith = user();

AssemblyLine.factory()

The Factory method accepts two arguments: the constructor class you want to use for your objects and a set of attributes to user when creating instances.

Example:

// define a custom constructor
var User = function(params) {
  this.params = params;
}
 
// define factories
var Factories = {
  jason: AssemblyLine.factory(User, {
    name: 'Jason',
    hometown: 'Jackson, Mississippi'
  })
}
 
var jason = Factories.jason();
console.log(jason);
// => { params: { name: 'Jason', hometown: 'Jackson, Mississippi' }}
 

AssemblyLine.sample()

The Sample method accepts one argument: an array or options to choose from. When a factory's attribute is set using the sample method, new instances will be created and assigned a random value from the options array.

Example:

var user = AssemblyLine.factory(Object, {
  name: AssemblyLine.sample([
    'james', 'jason', 'jenny', 'janice'
  ])
})
 
var user1 = user();
// user1.name will be one of james, jason, jenny, or janice

AssemblyLine.incr()

The Increment method accepts one argument: a string that should be used as the base value to increment on. When a factory's attribute is set using the increment method, new instances will be created by replacing #{i} with an incrementing integer. This is useful for ensuring unique email addresses, etc when testing.

Example:

var user = AssemblyLine.factory(Object, {
  email: AssemblyLine.incr('person#{i}@example.com')
})
 
var user1 = user();
// user1.email => person1@example.com
 
var user2 = user();
// user2.email => person2@example.com

Readme

Keywords

none

Package Sidebar

Install

npm i assembly_line

Weekly Downloads

2

Version

0.1.2

License

ISC

Last publish

Collaborators

  • hackley