ember-data-factory-guy 0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/dist/ember-data-factory-guy.js +13 -13
- data/dist/ember-data-factory-guy.min.js +1 -1
- data/ember-data-factory-guy.gemspec +6 -6
- data/src/factory_guy.js +6 -7
- data/src/has_many.js +1 -1
- data/src/store.js +6 -6
- data/tests/fixture_adapter_factory_test.js +14 -14
- data/vendor/assets/javascripts/ember_data_factory_guy.js +13 -13
- data/vendor/assets/javascripts/factory_guy_has_many.js +1 -1
- metadata +8 -7
@@ -30,7 +30,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
30
30
|
FactoryGuy.build('user') or FactoryGuy.build('bob')
|
31
31
|
|
32
32
|
@param model the model to define
|
33
|
-
@param config your default and
|
33
|
+
@param config your default and named fixtures
|
34
34
|
*/
|
35
35
|
define: function (model, config) {
|
36
36
|
var info = this.getModelInfo(model);
|
@@ -100,7 +100,9 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
100
100
|
var modelAttributes = modelInfo[name] || {};
|
101
101
|
var defaultModelAttributes = modelInfo.default;
|
102
102
|
var fixture = $.extend({}, defaultModelAttributes, modelAttributes, opts);
|
103
|
-
fixture.id
|
103
|
+
if(!fixture.id){
|
104
|
+
fixture.id = this.generateId(model);
|
105
|
+
}
|
104
106
|
return fixture;
|
105
107
|
},
|
106
108
|
|
@@ -118,10 +120,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
118
120
|
}
|
119
121
|
} else {
|
120
122
|
for (model in typeMaps) {
|
121
|
-
|
122
|
-
// console.log(typeMaps[model].type.typeKey)
|
123
|
-
store.unloadAll(typeMaps[model].type);
|
124
|
-
}
|
123
|
+
store.unloadAll(typeMaps[model].type);
|
125
124
|
}
|
126
125
|
}
|
127
126
|
this.modelIds = {}
|
@@ -142,6 +141,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
142
141
|
return fixture;
|
143
142
|
}
|
144
143
|
})
|
144
|
+
|
145
145
|
DS.Store.reopen({
|
146
146
|
|
147
147
|
usingFixtureAdapter: function() {
|
@@ -266,10 +266,10 @@ DS.FixtureAdapter.reopen({
|
|
266
266
|
createRecord: function(store, type, record) {
|
267
267
|
var promise = this._super(store, type, record);
|
268
268
|
|
269
|
-
promise.then( function() {
|
270
|
-
var hasManyName = Ember.String.pluralize(type.typeKey);
|
271
|
-
var relationShips = Ember.get(type, 'relationshipNames');
|
272
|
-
if (relationShips.belongsTo) {
|
269
|
+
// promise.then( function() {
|
270
|
+
// var hasManyName = Ember.String.pluralize(type.typeKey);
|
271
|
+
// var relationShips = Ember.get(type, 'relationshipNames');
|
272
|
+
// if (relationShips.belongsTo) {
|
273
273
|
// console.log('record',record+'', type.typeKey, hasManyName);
|
274
274
|
// relationShips.belongsTo.forEach(function (relationship) {
|
275
275
|
// console.log(relationship, record.get(relationship)+'')
|
@@ -277,8 +277,8 @@ DS.FixtureAdapter.reopen({
|
|
277
277
|
// console.log(relationshipForType)
|
278
278
|
// belongsToRecord.get(hasManyName).addObject(record);
|
279
279
|
// })
|
280
|
-
}
|
281
|
-
})
|
280
|
+
// }
|
281
|
+
// })
|
282
282
|
return promise;
|
283
283
|
}
|
284
284
|
|
@@ -359,7 +359,7 @@ FactoryGuyHelperMixin = Em.Mixin.create({
|
|
359
359
|
|
360
360
|
handleUpdate: function (root, id) {
|
361
361
|
this.stubEndpointForHttpRequest(
|
362
|
-
"/" + Em.String.pluralize(root) + "/" + id,
|
362
|
+
"/" + Em.String.pluralize(root) + "/" + id, {}, {type: 'PUT'}
|
363
363
|
)
|
364
364
|
},
|
365
365
|
|
@@ -1 +1 @@
|
|
1
|
-
FactoryGuy=Ember.Object.reopenClass({fixtureStore:{},fixtureLookup:{},modelIds:{},define:function(model,config){var info=this.getModelInfo(model);for(key in config){var value=config[key];info[key]=value;if(key!="default"){this.fixtureLookup[key]=model}}this.modelIds[model]=0},getModelInfo:function(model){if(!this.fixtureStore[model]){this.fixtureStore[model]={}}return this.fixtureStore[model]},lookupModelForName:function(name){var model=this.fixtureLookup[name];if(!model){if(this.fixtureStore[name]){model=name}}return model},generateId:function(model){var lastId=this.modelIds[model]||0;this.modelIds[model]=lastId+1;return this.modelIds[model]},build:function(name,opts){var model=this.lookupModelForName(name);if(!model){throw new Error("can't find that factory named ["+name+"]")}var modelInfo=this.fixtureStore[model];var modelAttributes=modelInfo[name]||{};var defaultModelAttributes=modelInfo.default;var fixture=$.extend({},defaultModelAttributes,modelAttributes,opts);fixture.id=this.generateId(model)
|
1
|
+
FactoryGuy=Ember.Object.reopenClass({fixtureStore:{},fixtureLookup:{},modelIds:{},define:function(model,config){var info=this.getModelInfo(model);for(key in config){var value=config[key];info[key]=value;if(key!="default"){this.fixtureLookup[key]=model}}this.modelIds[model]=0},getModelInfo:function(model){if(!this.fixtureStore[model]){this.fixtureStore[model]={}}return this.fixtureStore[model]},lookupModelForName:function(name){var model=this.fixtureLookup[name];if(!model){if(this.fixtureStore[name]){model=name}}return model},generateId:function(model){var lastId=this.modelIds[model]||0;this.modelIds[model]=lastId+1;return this.modelIds[model]},build:function(name,opts){var model=this.lookupModelForName(name);if(!model){throw new Error("can't find that factory named ["+name+"]")}var modelInfo=this.fixtureStore[model];var modelAttributes=modelInfo[name]||{};var defaultModelAttributes=modelInfo.default;var fixture=$.extend({},defaultModelAttributes,modelAttributes,opts);if(!fixture.id){fixture.id=this.generateId(model)}return fixture},resetModels:function(store){var typeMaps=store.typeMaps;if(store.usingFixtureAdapter()){for(typeKey in this.fixtureStore){var modelType=store.modelFor(typeKey);modelType.FIXTURES=[];store.unloadAll(modelType)}}else{for(model in typeMaps){store.unloadAll(typeMaps[model].type)}}this.modelIds={}},pushFixture:function(modelClass,fixture){if(!modelClass["FIXTURES"]){modelClass["FIXTURES"]=[]}modelClass["FIXTURES"].push(fixture);return fixture}});DS.Store.reopen({usingFixtureAdapter:function(){var adapter=this.adapterFor("application");return adapter instanceof DS.FixtureAdapter},makeFixture:function(name,options){var modelName=FactoryGuy.lookupModelForName(name);var fixture=FactoryGuy.build(name,options);var modelType=this.modelFor(modelName);if(this.usingFixtureAdapter()){this.setBelongsToFixturesAssociation(modelType,modelName,fixture);return FactoryGuy.pushFixture(modelType,fixture)}else{var self=this;var model;Em.run(function(){model=self.push(modelName,fixture);self.setBelongsToRestAssociation(modelType,modelName,model)});return model}},setBelongsToFixturesAssociation:function(modelType,modelName,parentFixture){var store=this;var adapter=this.adapterFor("application");var relationShips=Ember.get(modelType,"relationshipNames");if(relationShips.hasMany){relationShips.hasMany.forEach(function(relationship){var hasManyModel=store.modelFor(Em.String.singularize(relationship));if(parentFixture[relationship]){parentFixture[relationship].forEach(function(id){var hasManyfixtures=adapter.fixturesForType(hasManyModel);var fixture=adapter.findFixtureById(hasManyfixtures,id);fixture[modelName]=parentFixture.id})}})}},setBelongsToRestAssociation:function(modelType,modelName,parent){var relationShips=Ember.get(modelType,"relationshipNames");if(relationShips.hasMany){relationShips.hasMany.forEach(function(name){var children=parent.get(name);if(children.get("length")>0){children.forEach(function(child){child.set(modelName,parent)})}})}},pushPayload:function(type,payload){if(this.usingFixtureAdapter()){var model=this.modelFor(modelName);FactoryGuy.pushFixture(model,payload)}else{this._super(type,payload)}}});DS.FixtureAdapter.reopen({createRecord:function(store,type,record){var promise=this._super(store,type,record);return promise}});FactoryGuyHelperMixin=Em.Mixin.create({setup:function(app){this.set("container",app.__container__);return this},useFixtureAdapter:function(app){app.ApplicationAdapter=DS.FixtureAdapter;this.getStore().adapterFor("application").simulateRemoteResponse=false},find:function(type,id){return this.getStore().find(type,id)},make:function(name,opts){return this.getStore().makeFixture(name,opts)},getStore:function(){return this.get("container").lookup("store:main")},pushPayload:function(type,hash){return this.getStore().pushPayload(type,hash)},pushRecord:function(type,hash){return this.getStore().push(type,hash)},stubEndpointForHttpRequest:function(url,json,options){options=options||{};var request={url:url,dataType:"json",responseText:json,type:options.type||"GET",status:options.status||200};if(options.data){request.data=options.data}$.mockjax(request)},handleCreate:function(name,opts){var model=FactoryGuy.lookupModelForName(name);this.stubEndpointForHttpRequest("/"+Em.String.pluralize(model),this.buildAjaxResponse(name,opts),{type:"POST"})},buildAjaxResponse:function(name,opts){var fixture=FactoryGuy.build(name,opts);var model=FactoryGuy.lookupModelForName(name);var hash={};hash[model]=fixture;return hash},handleUpdate:function(root,id){this.stubEndpointForHttpRequest("/"+Em.String.pluralize(root)+"/"+id,{},{type:"PUT"})},handleDelete:function(root,id){this.stubEndpointForHttpRequest("/"+Em.String.pluralize(root)+"/"+id,{},{type:"DELETE"})},teardown:function(){FactoryGuy.resetModels(this.getStore())}});
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = "ember-data-factory-guy"
|
4
|
-
s.version = "0.1"
|
4
|
+
s.version = "0.1.1"
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
|
-
s.authors = ["
|
7
|
-
s.email = ["dansudol@yahoo.com"]
|
8
|
-
s.homepage = "
|
9
|
-
s.summary = "
|
10
|
-
s.description = "
|
6
|
+
s.authors = ["Daniel Sudol", "Alex Opak"]
|
7
|
+
s.email = ["dansudol@yahoo.com", "opak.alexandr@gmail.com"]
|
8
|
+
s.homepage = "https://github.com/danielspaniel/ember-data-factory-guy"
|
9
|
+
s.summary = "Easily create Fixtures for Ember Data"
|
10
|
+
s.description = "Easily create Fixtures for Ember Data"
|
11
11
|
s.license = "MIT"
|
12
12
|
|
13
13
|
s.required_rubygems_version = ">= 1.3.6"
|
data/src/factory_guy.js
CHANGED
@@ -30,7 +30,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
30
30
|
FactoryGuy.build('user') or FactoryGuy.build('bob')
|
31
31
|
|
32
32
|
@param model the model to define
|
33
|
-
@param config your default and
|
33
|
+
@param config your default and named fixtures
|
34
34
|
*/
|
35
35
|
define: function (model, config) {
|
36
36
|
var info = this.getModelInfo(model);
|
@@ -100,7 +100,9 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
100
100
|
var modelAttributes = modelInfo[name] || {};
|
101
101
|
var defaultModelAttributes = modelInfo.default;
|
102
102
|
var fixture = $.extend({}, defaultModelAttributes, modelAttributes, opts);
|
103
|
-
fixture.id
|
103
|
+
if(!fixture.id){
|
104
|
+
fixture.id = this.generateId(model);
|
105
|
+
}
|
104
106
|
return fixture;
|
105
107
|
},
|
106
108
|
|
@@ -118,10 +120,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
118
120
|
}
|
119
121
|
} else {
|
120
122
|
for (model in typeMaps) {
|
121
|
-
|
122
|
-
// console.log(typeMaps[model].type.typeKey)
|
123
|
-
store.unloadAll(typeMaps[model].type);
|
124
|
-
}
|
123
|
+
store.unloadAll(typeMaps[model].type);
|
125
124
|
}
|
126
125
|
}
|
127
126
|
this.modelIds = {}
|
@@ -141,4 +140,4 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
141
140
|
modelClass['FIXTURES'].push(fixture);
|
142
141
|
return fixture;
|
143
142
|
}
|
144
|
-
})
|
143
|
+
})
|
data/src/has_many.js
CHANGED
@@ -61,7 +61,7 @@
|
|
61
61
|
|
62
62
|
return Ember.computed('data', function(key) {
|
63
63
|
var adapter = this.store.adapterFor('application');
|
64
|
-
if (adapter.
|
64
|
+
if (adapter instanceof DS.FixtureAdapter) {
|
65
65
|
var relationship = this._relationships[key],
|
66
66
|
promiseLabel = "DS: Async hasMany " + this + " : " + key;
|
67
67
|
|
data/src/store.js
CHANGED
@@ -122,10 +122,10 @@ DS.FixtureAdapter.reopen({
|
|
122
122
|
createRecord: function(store, type, record) {
|
123
123
|
var promise = this._super(store, type, record);
|
124
124
|
|
125
|
-
promise.then( function() {
|
126
|
-
var hasManyName = Ember.String.pluralize(type.typeKey);
|
127
|
-
var relationShips = Ember.get(type, 'relationshipNames');
|
128
|
-
if (relationShips.belongsTo) {
|
125
|
+
// promise.then( function() {
|
126
|
+
// var hasManyName = Ember.String.pluralize(type.typeKey);
|
127
|
+
// var relationShips = Ember.get(type, 'relationshipNames');
|
128
|
+
// if (relationShips.belongsTo) {
|
129
129
|
// console.log('record',record+'', type.typeKey, hasManyName);
|
130
130
|
// relationShips.belongsTo.forEach(function (relationship) {
|
131
131
|
// console.log(relationship, record.get(relationship)+'')
|
@@ -133,8 +133,8 @@ DS.FixtureAdapter.reopen({
|
|
133
133
|
// console.log(relationshipForType)
|
134
134
|
// belongsToRecord.get(hasManyName).addObject(record);
|
135
135
|
// })
|
136
|
-
}
|
137
|
-
})
|
136
|
+
// }
|
137
|
+
// })
|
138
138
|
return promise;
|
139
139
|
}
|
140
140
|
|
@@ -118,17 +118,17 @@ asyncTest("#makeFixture sets hasMany associations on fixtures", function() {
|
|
118
118
|
})
|
119
119
|
})
|
120
120
|
|
121
|
-
asyncTest("#createRecord adds belongsTo associations to hasMany array", function() {
|
122
|
-
var user = store.makeFixture('user');
|
123
|
-
|
124
|
-
store.find('user', user.id).then(function(user){
|
125
|
-
|
126
|
-
var projectJson = {title:'project', user: user};
|
127
|
-
|
128
|
-
store.createRecord('project', projectJson).save()
|
129
|
-
.then( function() {
|
130
|
-
equal(user.get('projects.length'), 1);
|
131
|
-
start();
|
132
|
-
});
|
133
|
-
})
|
134
|
-
})
|
121
|
+
//asyncTest("#createRecord adds belongsTo associations to hasMany array", function() {
|
122
|
+
// var user = store.makeFixture('user');
|
123
|
+
//
|
124
|
+
// store.find('user', user.id).then(function(user){
|
125
|
+
//
|
126
|
+
// var projectJson = {title:'project', user: user};
|
127
|
+
//
|
128
|
+
// store.createRecord('project', projectJson).save()
|
129
|
+
// .then( function() {
|
130
|
+
// equal(user.get('projects.length'), 1);
|
131
|
+
// start();
|
132
|
+
// });
|
133
|
+
// })
|
134
|
+
//})
|
@@ -30,7 +30,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
30
30
|
FactoryGuy.build('user') or FactoryGuy.build('bob')
|
31
31
|
|
32
32
|
@param model the model to define
|
33
|
-
@param config your default and
|
33
|
+
@param config your default and named fixtures
|
34
34
|
*/
|
35
35
|
define: function (model, config) {
|
36
36
|
var info = this.getModelInfo(model);
|
@@ -100,7 +100,9 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
100
100
|
var modelAttributes = modelInfo[name] || {};
|
101
101
|
var defaultModelAttributes = modelInfo.default;
|
102
102
|
var fixture = $.extend({}, defaultModelAttributes, modelAttributes, opts);
|
103
|
-
fixture.id
|
103
|
+
if(!fixture.id){
|
104
|
+
fixture.id = this.generateId(model);
|
105
|
+
}
|
104
106
|
return fixture;
|
105
107
|
},
|
106
108
|
|
@@ -118,10 +120,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
118
120
|
}
|
119
121
|
} else {
|
120
122
|
for (model in typeMaps) {
|
121
|
-
|
122
|
-
// console.log(typeMaps[model].type.typeKey)
|
123
|
-
store.unloadAll(typeMaps[model].type);
|
124
|
-
}
|
123
|
+
store.unloadAll(typeMaps[model].type);
|
125
124
|
}
|
126
125
|
}
|
127
126
|
this.modelIds = {}
|
@@ -142,6 +141,7 @@ FactoryGuy = Ember.Object.reopenClass({
|
|
142
141
|
return fixture;
|
143
142
|
}
|
144
143
|
})
|
144
|
+
|
145
145
|
DS.Store.reopen({
|
146
146
|
|
147
147
|
usingFixtureAdapter: function() {
|
@@ -266,10 +266,10 @@ DS.FixtureAdapter.reopen({
|
|
266
266
|
createRecord: function(store, type, record) {
|
267
267
|
var promise = this._super(store, type, record);
|
268
268
|
|
269
|
-
promise.then( function() {
|
270
|
-
var hasManyName = Ember.String.pluralize(type.typeKey);
|
271
|
-
var relationShips = Ember.get(type, 'relationshipNames');
|
272
|
-
if (relationShips.belongsTo) {
|
269
|
+
// promise.then( function() {
|
270
|
+
// var hasManyName = Ember.String.pluralize(type.typeKey);
|
271
|
+
// var relationShips = Ember.get(type, 'relationshipNames');
|
272
|
+
// if (relationShips.belongsTo) {
|
273
273
|
// console.log('record',record+'', type.typeKey, hasManyName);
|
274
274
|
// relationShips.belongsTo.forEach(function (relationship) {
|
275
275
|
// console.log(relationship, record.get(relationship)+'')
|
@@ -277,8 +277,8 @@ DS.FixtureAdapter.reopen({
|
|
277
277
|
// console.log(relationshipForType)
|
278
278
|
// belongsToRecord.get(hasManyName).addObject(record);
|
279
279
|
// })
|
280
|
-
}
|
281
|
-
})
|
280
|
+
// }
|
281
|
+
// })
|
282
282
|
return promise;
|
283
283
|
}
|
284
284
|
|
@@ -359,7 +359,7 @@ FactoryGuyHelperMixin = Em.Mixin.create({
|
|
359
359
|
|
360
360
|
handleUpdate: function (root, id) {
|
361
361
|
this.stubEndpointForHttpRequest(
|
362
|
-
"/" + Em.String.pluralize(root) + "/" + id,
|
362
|
+
"/" + Em.String.pluralize(root) + "/" + id, {}, {type: 'PUT'}
|
363
363
|
)
|
364
364
|
},
|
365
365
|
|
@@ -61,7 +61,7 @@
|
|
61
61
|
|
62
62
|
return Ember.computed('data', function(key) {
|
63
63
|
var adapter = this.store.adapterFor('application');
|
64
|
-
if (adapter.
|
64
|
+
if (adapter instanceof DS.FixtureAdapter) {
|
65
65
|
var relationship = this._relationships[key],
|
66
66
|
promiseLabel = "DS: Async hasMany " + this + " : " + key;
|
67
67
|
|
metadata
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ember-data-factory-guy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
9
|
-
-
|
8
|
+
- Daniel Sudol
|
9
|
+
- Alex Opak
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-04-
|
13
|
+
date: 2014-04-24 00:00:00.000000000 +03:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
|
-
description:
|
16
|
+
description: Easily create Fixtures for Ember Data
|
17
17
|
email:
|
18
18
|
- dansudol@yahoo.com
|
19
|
+
- opak.alexandr@gmail.com
|
19
20
|
executables: []
|
20
21
|
extensions: []
|
21
22
|
extra_rdoc_files: []
|
@@ -48,7 +49,7 @@ files:
|
|
48
49
|
- vendor/assets/javascripts/ember_data_factory_guy.js
|
49
50
|
- vendor/assets/javascripts/factory_guy_has_many.js
|
50
51
|
has_rdoc: true
|
51
|
-
homepage:
|
52
|
+
homepage: https://github.com/danielspaniel/ember-data-factory-guy
|
52
53
|
licenses:
|
53
54
|
- MIT
|
54
55
|
post_install_message:
|
@@ -72,5 +73,5 @@ rubyforge_project: ember-data-factory-guy
|
|
72
73
|
rubygems_version: 1.6.2
|
73
74
|
signing_key:
|
74
75
|
specification_version: 3
|
75
|
-
summary:
|
76
|
+
summary: Easily create Fixtures for Ember Data
|
76
77
|
test_files: []
|