Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
50 lines (36 sloc) 1.66 KB


Rosie the Riveter

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


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

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

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

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

var game ='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


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