New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

rosie

Package Overview
Dependencies
Maintainers
2
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rosie - npm Package Compare versions

Comparing version 0.3.1 to 0.4.0

2

bower.json
{
"name": "rosie",
"version": "0.3.1",
"version": "0.4.0",
"main": "src/rosie.js",

@@ -5,0 +5,0 @@ "ignore": [

{
"name": "rosie",
"version": "0.3.1",
"version": "0.4.0",
"main": "src/rosie.js",

@@ -5,0 +5,0 @@ "ignore": [

{
"name": "rosie",
"version": "0.3.1",
"version": "0.4.0",
"description": "factory for building JavaScript objects, mostly useful for setting up test data. Inspired by factory_girl",

@@ -5,0 +5,0 @@ "keywords": [

@@ -11,67 +11,77 @@ # Rosie

Factory.define('game', Game)
.sequence('id')
.attr('is_over', false)
.attr('created_at', function() { return new Date(); })
.attr('random_seed', function() { return Math.random(); })
```js
Factory.define('game', Game)
.sequence('id')
.attr('is_over', false)
.attr('created_at', function() { return new Date(); })
.attr('random_seed', function() { return Math.random(); })
// Default to two players. If players were given, fill in
// whatever attributes might be missing.
.attr('players', ['players'], function(players) {
if (!players) { players = [{}, {}]; }
return players.map(function(data) {
return Factory.attributes('player', data);
});
});
// Default to two players. If players were given, fill in
// whatever attributes might be missing.
.attr('players', ['players'], function(players) {
if (!players) { players = [{}, {}]; }
return players.map(function(data) {
return Factory.attributes('player', data);
});
});
Factory.define('player')
.sequence('id')
.sequence('name', function(i) { return 'player' + i; })
Factory.define('player')
.sequence('id')
.sequence('name', function(i) { return 'player' + i; })
// Define `position` to depend on `id`.
.attr('position', ['id'], function(id) {
var positions = ['pitcher', '1st base', '2nd base', '3rd base'];
return positions[id % positions.length];
});
// Define `position` to depend on `id`.
.attr('position', ['id'], function(id) {
var positions = ['pitcher', '1st base', '2nd base', '3rd base'];
return positions[id % positions.length];
});
Factory.define('disabled-player').extend('player').attr('state', 'disabled')
Factory.define('disabled-player').extend('player').attr('state', 'disabled')
```
Now you can build an object, passing in attributes that you want to override:
var game = Factory.build('game', {is_over:true});
```js
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: 2, name:'Player 2'}
]
}
```js
{
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: 2, name:'Player 2'}
]
}
````
For a factory with a constructor, if you want just the attributes:
Factory.attributes('game') // return just the attributes
```js
Factory.attributes('game') // return just the attributes
```
You can also define a callback function to be run after building an object:
Factory.define('coach')
.option('buildPlayer', false)
.sequence('id')
.attr('players', ['id', 'buildPlayer'], function(id, buildPlayer) {
if (buildPlayer) {
return [Factory.build('player', {coach_id: id})];
}
})
.after(function(coach, options) {
if (options.buildPlayer) {
console.log('built player:', coach.players[0]);
}
});
```js
Factory.define('coach')
.option('buildPlayer', false)
.sequence('id')
.attr('players', ['id', 'buildPlayer'], function(id, buildPlayer) {
if (buildPlayer) {
return [Factory.build('player', {coach_id: id})];
}
})
.after(function(coach, options) {
if (options.buildPlayer) {
console.log('built player:', coach.players[0]);
}
});
Factory.build('coach', {}, {buildPlayer: true});
Factory.build('coach', {}, {buildPlayer: true});
```

@@ -78,0 +88,0 @@ ## Contributing

@@ -302,2 +302,43 @@ describe('Factory', function() {

});
it('should be able to depend on one option', function() {
var startTime = 5;
factory.option('startTime', startTime).sequence('time', ['startTime'], function(i, startTime) {
return startTime + i;
});
expect(factory.attributes()).toEqual({time: startTime + 1});
expect(factory.attributes()).toEqual({time: startTime + 2});
expect(factory.attributes()).toEqual({time: startTime + 3});
});
it('should be able to depend on one attribute', function() {
var startTime = 5;
factory.attr('startTime', startTime).sequence('time', ['startTime'], function(i, startTime) {
return startTime + i;
});
expect(factory.attributes()).toEqual({startTime: startTime, time: startTime + 1});
expect(factory.attributes()).toEqual({startTime: startTime, time: startTime + 2});
expect(factory.attributes()).toEqual({startTime: startTime, time: startTime + 3});
});
it('should be able to depend on several attributes and options', function() {
var startTime = 5;
var endTime = 7;
factory
.attr('startTime', startTime)
.attr('endTime', endTime)
.option('checkEndTime', true)
.sequence('time', ['startTime', 'endTime', 'checkEndTime'], function(i, startTime, endTime, checkEndTime) {
return checkEndTime ? Math.min(startTime + i, endTime) : startTime + i;
});
expect(factory.attributes()).toEqual({startTime: startTime, endTime: endTime, time: startTime + 1});
expect(factory.attributes()).toEqual({startTime: startTime, endTime: endTime, time: startTime + 2});
expect(factory.attributes()).toEqual({startTime: startTime, endTime: endTime, time: startTime + 2});
});
});

@@ -304,0 +345,0 @@

@@ -6,3 +6,3 @@ /**

*
* @param {?Function} constructor
* @param {Function=} constructor
* @class

@@ -54,3 +54,3 @@ */

* @param {string} attr
* @param {?Array.<string>} dependencies
* @param {Array.<string>=} dependencies
* @param {*} value

@@ -95,4 +95,4 @@ * @return {Factory}

* @param {string} attr
* @param {?Array.<string>} dependencies
* @param {?*} value
* @param {Array.<string>=} dependencies
* @param {*=} value
* @return {Factory}

@@ -126,11 +126,19 @@ */

* @param {string} attr
* @param {?function(number): *} builder
* @param {function(number): *=} builder
* @return {Factory}
*/
sequence: function(attr, builder) {
sequence: function(attr, dependencies, builder) {
var factory = this;
if (arguments.length === 2) {
builder = dependencies;
dependencies = null;
}
builder = builder || function(i) { return i; };
return this.attr(attr, function() {
return this.attr(attr, dependencies, function() {
var args = [].slice.call(arguments);
factory.sequences[attr] = factory.sequences[attr] || 0;
return builder(++factory.sequences[attr]);
args.unshift(++factory.sequences[attr]);
return builder.apply(null, args);
});

@@ -171,4 +179,4 @@ },

*
* @param {?object} attributes
* @param {?object} options
* @param {object=} attributes
* @param {object=} options
* @return {object}

@@ -356,3 +364,3 @@ */

* @param {object} dest
* @param {?object} source
* @param {object=} source
* @return {object}

@@ -379,4 +387,4 @@ */

*
* @param {string} name
* @param {?function(object): *} constructor
* @param {!string} name
* @param {function(object): *=} constructor
* @return {Factory}

@@ -383,0 +391,0 @@ */

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc