Factory
Create and distribute test fixtures/factories.
Usage
All examples assume you have required object-factory like this:
var Factory = ;
Basic task syntax
{ thistitle = propstitle; thislocation = propslocation;} var EventFactory = object: Event properties: // define defaults title: 'Amazing Event' location: 'Bahamas' ; // create an object with the attributes of the factory but not an// instance of the Event classvar event = EventFactory; // Create an instance of the event classvar event = EventFactory;
Options for factories
When creating factories there are various options that can be passed.
.properties
properties: key: 'default value ' ;
The .properties
property (sorry) specify the default values for a
given factory.
.object
var MyThing = object: ThingWithConstructorThatAcceptsObjects;
As the fictional object might suggest object is the object that the factories properties are passed into...
// This operation MyThing; // Translates to this xfoo: true
.onbuild
The onbuild
property will be called if given before the generated
properties are passed to the constructor .object
.
var BuildMe = { // use this to customize the output of your factory for dynamic // values, etc... }
.oncreate
The oncreate
property will be called if given after the generated
properties are passed to the constructor .object
.
var BuildMe = object: Xfoo { // (object instanceof Xfoo) === true }
Composing factories
You can't create abritrarty depth in a factory. Each factory must be one object deep but multiple factories can be referenced as properties to create this nesting.
var Person = properties: name: 'James Lal' ; var Event = properties: // define defaults title: 'Amazing Event' location: 'Bahamas' person: Person ;
Inheritance
Factories can inherit from other factories:
var Developer = Person;
Testing Factories
object factory ships with a object-factory-viewer
binary which will
pretty print the output of your factory given a module.
// xfoo.jsmoduleexports = properties: xfoo: 'foo' ;
./node_modules/.bin/object-factory-viewer xfoo.js# will output the pretty printed (util.inspect) version of the factory.
If your not using .onbuild or .oncreate then this is a great way to test the output of your factories. This serves as a good sanity check (and could be used as documentation too).