Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
factory for building JavaScript objects, mostly useful for setting up test data. Inspired by factory_girl
JavaScript Other
tree: 0551b18a61

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
spec/javascripts
src
.gitignore
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
package.json

README.md

Rosie

Rosie the Riveter

Rosie is a factory for building JavaScript objects, mostly useful for setting up test data. It is inspired by factory_girl.

Usage

Define your factory, giving it a name and optionally a constructor function:

Factory.define('game', Game)
  .sequence('id')
  .attr('is_over', false)
  .attr('created_at', function() { return new Date(); })
  .attr('random_seed', function() { return Math.random(); })
  .attr('players', function() {
    return [
      Factory.attributes('player'),
      Factory.attributes('player')
    ];
  });

Factory.define('player')
  .sequence('id')
  .sequence('name', function(i) { return 'player' + i; });

Now you can build an object, passing in attributes that you want to override:

var game = Factory.build('game', {is_over:true});

Which returns an object that looks roughly like:

{
  id:           1,
  is_over:      true,   // overriden when building
  created_at:   Fri Apr 15 2011 12:02:25 GMT-0400 (EDT),
  random_seed:  0.8999513240996748,
  players: [
                {id: 1, name:'Player 1'},
                {id: 1, name:'Player 2'}
  ]
}

For a factory with a constructor, if you want just the attributes:

Factory.attributes('game') // return just the attributes

Credits

Thanks to Daniel Morrison for the name and Jon Hoyt for inspiration and brainstorming the idea.

Something went wrong with that request. Please try again.