ember-data-factory-guy 0.3.0 → 0.3.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/Gruntfile.js +1 -1
- data/bower.json +1 -1
- data/dist/ember-data-factory-guy.js +18 -5
- data/dist/ember-data-factory-guy.min.js +1 -1
- data/ember-data-factory-guy.gemspec +1 -1
- data/package.json +1 -1
- data/src/store.js +18 -5
- data/tests/rest_adapter_factory_test.js +12 -1
- data/vendor/assets/javascripts/ember_data_factory_guy.js +18 -5
- metadata +1 -1
data/Gruntfile.js
CHANGED
data/bower.json
CHANGED
@@ -461,7 +461,7 @@ DS.Store.reopen({
|
|
461
461
|
FactoryGuy.pushFixture(relationship.type, belongsToRecord);
|
462
462
|
fixture[relationship.key] = belongsToRecord.id;
|
463
463
|
}
|
464
|
-
var hasManyName = self.
|
464
|
+
var hasManyName = self.findHasManyRelationshipNameForFixtureAdapter(relationship.type, relationship.parentType);
|
465
465
|
var belongsToFixtures = adapter.fixturesForType(relationship.type);
|
466
466
|
var belongsTofixture = adapter.findFixtureById(belongsToFixtures, fixture[relationship.key]);
|
467
467
|
if (!belongsTofixture[hasManyName]) {
|
@@ -538,7 +538,7 @@ DS.Store.reopen({
|
|
538
538
|
if (belongsToRecord) {
|
539
539
|
var hasManyName = self.findHasManyRelationshipName(
|
540
540
|
belongsToRecord.constructor,
|
541
|
-
model
|
541
|
+
model
|
542
542
|
)
|
543
543
|
belongsToRecord.get(hasManyName).addObject(model);
|
544
544
|
}
|
@@ -546,12 +546,25 @@ DS.Store.reopen({
|
|
546
546
|
})
|
547
547
|
},
|
548
548
|
|
549
|
-
findHasManyRelationshipName: function (belongToModelType,
|
549
|
+
findHasManyRelationshipName: function (belongToModelType, childModel) {
|
550
550
|
var relationshipName;
|
551
551
|
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
552
552
|
function (name, relationship) {
|
553
553
|
if (relationship.kind == 'hasMany' &&
|
554
|
-
relationship.type
|
554
|
+
childModel instanceof relationship.type) {
|
555
|
+
relationshipName = relationship.key;
|
556
|
+
}
|
557
|
+
}
|
558
|
+
)
|
559
|
+
return relationshipName;
|
560
|
+
},
|
561
|
+
|
562
|
+
findHasManyRelationshipNameForFixtureAdapter: function (belongToModelType, childModelType) {
|
563
|
+
var relationshipName;
|
564
|
+
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
565
|
+
function (name, relationship) {
|
566
|
+
if (relationship.kind == 'hasMany' &&
|
567
|
+
childModelType == relationship.type) {
|
555
568
|
relationshipName = relationship.key;
|
556
569
|
}
|
557
570
|
}
|
@@ -629,7 +642,7 @@ DS.FixtureAdapter.reopen({
|
|
629
642
|
if (belongsToRecord) {
|
630
643
|
var hasManyName = store.findHasManyRelationshipName(
|
631
644
|
belongsToRecord.constructor,
|
632
|
-
record
|
645
|
+
record
|
633
646
|
);
|
634
647
|
belongsToRecord.get(hasManyName).addObject(record);
|
635
648
|
}
|
@@ -1 +1 @@
|
|
1
|
-
Sequence=function(fn){var index=1;this.next=function(){return fn.call(this,index++)};this.reset=function(){index=1}};function MissingSequenceError(message){this.toString=function(){return message}}ModelDefinition=function(model,config){var sequences={};var defaultAttributes={};var namedModels={};var modelId=1;this.model=model;this.matchesName=function(name){return model==name||namedModels[name]};this.merge=function(config){};this.generate=function(sequenceName){var sequence=sequences[sequenceName];if(!sequence){throw new MissingSequenceError("Can not find that sequence named ["+sequenceName+"] in '"+model+"' definition")}return sequence.next()};this.build=function(name,opts){var modelAttributes=namedModels[name]||{};var fixture=$.extend({},defaultAttributes,modelAttributes,opts);for(attribute in fixture){if(Ember.typeOf(fixture[attribute])=="function"){fixture[attribute]=fixture[attribute].call(this,fixture)}else if(Ember.typeOf(fixture[attribute])=="object"){fixture[attribute]=FactoryGuy.build(attribute,fixture[attribute])}}if(!fixture.id){fixture.id=modelId++}return fixture};this.buildList=function(name,number,opts){var arr=[];for(var i=0;i<number;i++){arr.push(this.build(name,opts))}return arr};this.reset=function(){modelId=1;for(name in sequences){sequences[name].reset()}};var parseDefault=function(object){if(!object){return}defaultAttributes=object};var parseSequences=function(object){if(!object){return}for(sequenceName in object){var sequenceFn=object[sequenceName];if(typeof sequenceFn!="function"){throw new Error("Problem with ["+sequenceName+"] sequence definition. Sequences must be functions")}object[sequenceName]=new Sequence(sequenceFn)}sequences=object};var parseConfig=function(config){parseSequences(config.sequences);delete config.sequences;parseDefault(config.default);delete config.default;namedModels=config};parseConfig(config)};FactoryGuy={modelDefinitions:{},define:function(model,config){if(this.modelDefinitions[model]){this.modelDefinitions[model].merge(config)}else{this.modelDefinitions[model]=new ModelDefinition(model,config)}},generate:function(sequenceName){return function(){return this.generate(sequenceName)}},association:function(fixtureName,opts){return function(){return FactoryGuy.build(fixtureName,opts)}},lookupModelForFixtureName:function(name){var definition=this.lookupDefinitionForFixtureName(name);if(definition){return definition.model}},lookupDefinitionForFixtureName:function(name){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];if(definition.matchesName(name)){return definition}}},build:function(name,opts){var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.build(name,opts)},buildList:function(name,number,opts){var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.buildList(name,number,opts)},resetModels:function(store){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];definition.reset();try{var modelType=store.modelFor(definition.model);if(store.usingFixtureAdapter()){modelType.FIXTURES=[]}store.unloadAll(modelType)}catch(e){}}},pushFixture:function(modelClass,fixture){if(!modelClass["FIXTURES"]){modelClass["FIXTURES"]=[]}modelClass["FIXTURES"].push(fixture);return fixture},clear:function(opts){if(!opts){this.modelDefinitions={}}}};DS.Store.reopen({usingFixtureAdapter:function(){var adapter=this.adapterFor("application");return adapter instanceof DS.FixtureAdapter},makeFixture:function(name,options){var modelName=FactoryGuy.lookupModelForFixtureName(name);var fixture=FactoryGuy.build(name,options);var modelType=this.modelFor(modelName);if(this.usingFixtureAdapter()){this.setAssociationsForFixtureAdapter(modelType,modelName,fixture);return FactoryGuy.pushFixture(modelType,fixture)}else{var store=this;var model;Em.run(function(){store.findEmbeddedBelongsToAssociationsForRESTAdapter(modelType,fixture);if(fixture.type){modelName=fixture.type}model=store.push(modelName,fixture);store.setAssociationsForRESTAdapter(modelType,modelName,model)});return model}},makeList:function(name,number,options){var arr=[];for(var i=0;i<number;i++){arr.push(this.makeFixture(name,options))}return arr},setAssociationsForFixtureAdapter:function(modelType,modelName,fixture){var self=this;var adapter=this.adapterFor("application");Ember.get(modelType,"relationshipsByName").forEach(function(name,relationship){if(relationship.kind=="hasMany"){if(fixture[relationship.key]){fixture[relationship.key].forEach(function(id){var hasManyfixtures=adapter.fixturesForType(relationship.type);var fixture=adapter.findFixtureById(hasManyfixtures,id);fixture[modelName]=fixture.id})}}if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(belongsToRecord){if(typeof belongsToRecord=="object"){FactoryGuy.pushFixture(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord.id}var hasManyName=self.
|
1
|
+
Sequence=function(fn){var index=1;this.next=function(){return fn.call(this,index++)};this.reset=function(){index=1}};function MissingSequenceError(message){this.toString=function(){return message}}ModelDefinition=function(model,config){var sequences={};var defaultAttributes={};var namedModels={};var modelId=1;this.model=model;this.matchesName=function(name){return model==name||namedModels[name]};this.merge=function(config){};this.generate=function(sequenceName){var sequence=sequences[sequenceName];if(!sequence){throw new MissingSequenceError("Can not find that sequence named ["+sequenceName+"] in '"+model+"' definition")}return sequence.next()};this.build=function(name,opts){var modelAttributes=namedModels[name]||{};var fixture=$.extend({},defaultAttributes,modelAttributes,opts);for(attribute in fixture){if(Ember.typeOf(fixture[attribute])=="function"){fixture[attribute]=fixture[attribute].call(this,fixture)}else if(Ember.typeOf(fixture[attribute])=="object"){fixture[attribute]=FactoryGuy.build(attribute,fixture[attribute])}}if(!fixture.id){fixture.id=modelId++}return fixture};this.buildList=function(name,number,opts){var arr=[];for(var i=0;i<number;i++){arr.push(this.build(name,opts))}return arr};this.reset=function(){modelId=1;for(name in sequences){sequences[name].reset()}};var parseDefault=function(object){if(!object){return}defaultAttributes=object};var parseSequences=function(object){if(!object){return}for(sequenceName in object){var sequenceFn=object[sequenceName];if(typeof sequenceFn!="function"){throw new Error("Problem with ["+sequenceName+"] sequence definition. Sequences must be functions")}object[sequenceName]=new Sequence(sequenceFn)}sequences=object};var parseConfig=function(config){parseSequences(config.sequences);delete config.sequences;parseDefault(config.default);delete config.default;namedModels=config};parseConfig(config)};FactoryGuy={modelDefinitions:{},define:function(model,config){if(this.modelDefinitions[model]){this.modelDefinitions[model].merge(config)}else{this.modelDefinitions[model]=new ModelDefinition(model,config)}},generate:function(sequenceName){return function(){return this.generate(sequenceName)}},association:function(fixtureName,opts){return function(){return FactoryGuy.build(fixtureName,opts)}},lookupModelForFixtureName:function(name){var definition=this.lookupDefinitionForFixtureName(name);if(definition){return definition.model}},lookupDefinitionForFixtureName:function(name){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];if(definition.matchesName(name)){return definition}}},build:function(name,opts){var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.build(name,opts)},buildList:function(name,number,opts){var definition=this.lookupDefinitionForFixtureName(name);if(!definition){throw new Error("Can't find that factory named ["+name+"]")}return definition.buildList(name,number,opts)},resetModels:function(store){for(model in this.modelDefinitions){var definition=this.modelDefinitions[model];definition.reset();try{var modelType=store.modelFor(definition.model);if(store.usingFixtureAdapter()){modelType.FIXTURES=[]}store.unloadAll(modelType)}catch(e){}}},pushFixture:function(modelClass,fixture){if(!modelClass["FIXTURES"]){modelClass["FIXTURES"]=[]}modelClass["FIXTURES"].push(fixture);return fixture},clear:function(opts){if(!opts){this.modelDefinitions={}}}};DS.Store.reopen({usingFixtureAdapter:function(){var adapter=this.adapterFor("application");return adapter instanceof DS.FixtureAdapter},makeFixture:function(name,options){var modelName=FactoryGuy.lookupModelForFixtureName(name);var fixture=FactoryGuy.build(name,options);var modelType=this.modelFor(modelName);if(this.usingFixtureAdapter()){this.setAssociationsForFixtureAdapter(modelType,modelName,fixture);return FactoryGuy.pushFixture(modelType,fixture)}else{var store=this;var model;Em.run(function(){store.findEmbeddedBelongsToAssociationsForRESTAdapter(modelType,fixture);if(fixture.type){modelName=fixture.type}model=store.push(modelName,fixture);store.setAssociationsForRESTAdapter(modelType,modelName,model)});return model}},makeList:function(name,number,options){var arr=[];for(var i=0;i<number;i++){arr.push(this.makeFixture(name,options))}return arr},setAssociationsForFixtureAdapter:function(modelType,modelName,fixture){var self=this;var adapter=this.adapterFor("application");Ember.get(modelType,"relationshipsByName").forEach(function(name,relationship){if(relationship.kind=="hasMany"){if(fixture[relationship.key]){fixture[relationship.key].forEach(function(id){var hasManyfixtures=adapter.fixturesForType(relationship.type);var fixture=adapter.findFixtureById(hasManyfixtures,id);fixture[modelName]=fixture.id})}}if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(belongsToRecord){if(typeof belongsToRecord=="object"){FactoryGuy.pushFixture(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord.id}var hasManyName=self.findHasManyRelationshipNameForFixtureAdapter(relationship.type,relationship.parentType);var belongsToFixtures=adapter.fixturesForType(relationship.type);var belongsTofixture=adapter.findFixtureById(belongsToFixtures,fixture[relationship.key]);if(!belongsTofixture[hasManyName]){belongsTofixture[hasManyName]=[]}belongsTofixture[hasManyName].push(fixture.id)}}})},findEmbeddedBelongsToAssociationsForRESTAdapter:function(modelType,fixture){var store=this;Ember.get(modelType,"relationshipsByName").forEach(function(name,relationship){if(relationship.kind=="belongsTo"){var belongsToRecord=fixture[relationship.key];if(typeof belongsToRecord=="object"){belongsToRecord=store.push(relationship.type,belongsToRecord);fixture[relationship.key]=belongsToRecord}}})},setAssociationsForRESTAdapter:function(modelType,modelName,model){var self=this;Ember.get(modelType,"relationshipsByName").forEach(function(name,relationship){if(relationship.kind=="hasMany"){var children=model.get(name)||[];children.forEach(function(child){child.set(modelName,model)})}if(relationship.kind=="belongsTo"){var belongsToRecord=model.get(name);if(belongsToRecord){var hasManyName=self.findHasManyRelationshipName(belongsToRecord.constructor,model);belongsToRecord.get(hasManyName).addObject(model)}}})},findHasManyRelationshipName:function(belongToModelType,childModel){var relationshipName;Ember.get(belongToModelType,"relationshipsByName").forEach(function(name,relationship){if(relationship.kind=="hasMany"&&childModel instanceof relationship.type){relationshipName=relationship.key}});return relationshipName},findHasManyRelationshipNameForFixtureAdapter:function(belongToModelType,childModelType){var relationshipName;Ember.get(belongToModelType,"relationshipsByName").forEach(function(name,relationship){if(relationship.kind=="hasMany"&&childModelType==relationship.type){relationshipName=relationship.key}});return relationshipName},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);promise.then(function(){var relationShips=Ember.get(type,"relationshipNames");if(relationShips.belongsTo){relationShips.belongsTo.forEach(function(relationship){var belongsToRecord=record.get(relationship);if(belongsToRecord){var hasManyName=store.findHasManyRelationshipName(belongsToRecord.constructor,record);belongsToRecord.get(hasManyName).addObject(record)}})}});return promise}});FactoryGuyTestMixin=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.lookupModelForFixtureName(name);this.stubEndpointForHttpRequest("/"+Em.String.pluralize(model),this.buildAjaxCreateResponse(name,opts),{type:"POST"})},buildAjaxCreateResponse:function(name,opts){var fixture=FactoryGuy.build(name,opts);var model=FactoryGuy.lookupModelForFixtureName(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,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = "ember-data-factory-guy"
|
4
|
-
s.version = "0.3.
|
4
|
+
s.version = "0.3.1"
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
6
|
s.authors = ["Daniel Sudol", "Alex Opak"]
|
7
7
|
s.email = ["dansudol@yahoo.com", "opak.alexandr@gmail.com"]
|
data/package.json
CHANGED
data/src/store.js
CHANGED
@@ -103,7 +103,7 @@ DS.Store.reopen({
|
|
103
103
|
FactoryGuy.pushFixture(relationship.type, belongsToRecord);
|
104
104
|
fixture[relationship.key] = belongsToRecord.id;
|
105
105
|
}
|
106
|
-
var hasManyName = self.
|
106
|
+
var hasManyName = self.findHasManyRelationshipNameForFixtureAdapter(relationship.type, relationship.parentType);
|
107
107
|
var belongsToFixtures = adapter.fixturesForType(relationship.type);
|
108
108
|
var belongsTofixture = adapter.findFixtureById(belongsToFixtures, fixture[relationship.key]);
|
109
109
|
if (!belongsTofixture[hasManyName]) {
|
@@ -180,7 +180,7 @@ DS.Store.reopen({
|
|
180
180
|
if (belongsToRecord) {
|
181
181
|
var hasManyName = self.findHasManyRelationshipName(
|
182
182
|
belongsToRecord.constructor,
|
183
|
-
model
|
183
|
+
model
|
184
184
|
)
|
185
185
|
belongsToRecord.get(hasManyName).addObject(model);
|
186
186
|
}
|
@@ -188,12 +188,25 @@ DS.Store.reopen({
|
|
188
188
|
})
|
189
189
|
},
|
190
190
|
|
191
|
-
findHasManyRelationshipName: function (belongToModelType,
|
191
|
+
findHasManyRelationshipName: function (belongToModelType, childModel) {
|
192
192
|
var relationshipName;
|
193
193
|
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
194
194
|
function (name, relationship) {
|
195
195
|
if (relationship.kind == 'hasMany' &&
|
196
|
-
relationship.type
|
196
|
+
childModel instanceof relationship.type) {
|
197
|
+
relationshipName = relationship.key;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
)
|
201
|
+
return relationshipName;
|
202
|
+
},
|
203
|
+
|
204
|
+
findHasManyRelationshipNameForFixtureAdapter: function (belongToModelType, childModelType) {
|
205
|
+
var relationshipName;
|
206
|
+
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
207
|
+
function (name, relationship) {
|
208
|
+
if (relationship.kind == 'hasMany' &&
|
209
|
+
childModelType == relationship.type) {
|
197
210
|
relationshipName = relationship.key;
|
198
211
|
}
|
199
212
|
}
|
@@ -271,7 +284,7 @@ DS.FixtureAdapter.reopen({
|
|
271
284
|
if (belongsToRecord) {
|
272
285
|
var hasManyName = store.findHasManyRelationshipName(
|
273
286
|
belongsToRecord.constructor,
|
274
|
-
record
|
287
|
+
record
|
275
288
|
);
|
276
289
|
belongsToRecord.get(hasManyName).addObject(record);
|
277
290
|
}
|
@@ -67,13 +67,24 @@ test("supports hasMany associations", function() {
|
|
67
67
|
});
|
68
68
|
|
69
69
|
|
70
|
-
test("
|
70
|
+
test("when polymorphic hasMany associations are assigned, belongTo parent is assigned", function() {
|
71
71
|
var sh = store.makeFixture('big_hat');
|
72
72
|
var bh = store.makeFixture('small_hat');
|
73
73
|
var user = store.makeFixture('user', {hats: [sh, bh]})
|
74
74
|
equal(user.get('hats.length'), 2);
|
75
75
|
ok(user.get('hats.firstObject') instanceof BigHat)
|
76
76
|
ok(user.get('hats.lastObject') instanceof SmallHat)
|
77
|
+
// sets the belongTo user association
|
78
|
+
ok(sh.get('user') == user)
|
79
|
+
ok(bh.get('user') == user)
|
80
|
+
});
|
81
|
+
|
82
|
+
|
83
|
+
test("when belongTo parent is assigned, parent adds to polymorphic hasMany records", function() {
|
84
|
+
var user = store.makeFixture('user');
|
85
|
+
store.makeFixture('big_hat', {user: user});
|
86
|
+
equal(user.get('hats.length'), 1);
|
87
|
+
ok(user.get('hats.firstObject') instanceof BigHat)
|
77
88
|
});
|
78
89
|
|
79
90
|
|
@@ -461,7 +461,7 @@ DS.Store.reopen({
|
|
461
461
|
FactoryGuy.pushFixture(relationship.type, belongsToRecord);
|
462
462
|
fixture[relationship.key] = belongsToRecord.id;
|
463
463
|
}
|
464
|
-
var hasManyName = self.
|
464
|
+
var hasManyName = self.findHasManyRelationshipNameForFixtureAdapter(relationship.type, relationship.parentType);
|
465
465
|
var belongsToFixtures = adapter.fixturesForType(relationship.type);
|
466
466
|
var belongsTofixture = adapter.findFixtureById(belongsToFixtures, fixture[relationship.key]);
|
467
467
|
if (!belongsTofixture[hasManyName]) {
|
@@ -538,7 +538,7 @@ DS.Store.reopen({
|
|
538
538
|
if (belongsToRecord) {
|
539
539
|
var hasManyName = self.findHasManyRelationshipName(
|
540
540
|
belongsToRecord.constructor,
|
541
|
-
model
|
541
|
+
model
|
542
542
|
)
|
543
543
|
belongsToRecord.get(hasManyName).addObject(model);
|
544
544
|
}
|
@@ -546,12 +546,25 @@ DS.Store.reopen({
|
|
546
546
|
})
|
547
547
|
},
|
548
548
|
|
549
|
-
findHasManyRelationshipName: function (belongToModelType,
|
549
|
+
findHasManyRelationshipName: function (belongToModelType, childModel) {
|
550
550
|
var relationshipName;
|
551
551
|
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
552
552
|
function (name, relationship) {
|
553
553
|
if (relationship.kind == 'hasMany' &&
|
554
|
-
relationship.type
|
554
|
+
childModel instanceof relationship.type) {
|
555
|
+
relationshipName = relationship.key;
|
556
|
+
}
|
557
|
+
}
|
558
|
+
)
|
559
|
+
return relationshipName;
|
560
|
+
},
|
561
|
+
|
562
|
+
findHasManyRelationshipNameForFixtureAdapter: function (belongToModelType, childModelType) {
|
563
|
+
var relationshipName;
|
564
|
+
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
565
|
+
function (name, relationship) {
|
566
|
+
if (relationship.kind == 'hasMany' &&
|
567
|
+
childModelType == relationship.type) {
|
555
568
|
relationshipName = relationship.key;
|
556
569
|
}
|
557
570
|
}
|
@@ -629,7 +642,7 @@ DS.FixtureAdapter.reopen({
|
|
629
642
|
if (belongsToRecord) {
|
630
643
|
var hasManyName = store.findHasManyRelationshipName(
|
631
644
|
belongsToRecord.constructor,
|
632
|
-
record
|
645
|
+
record
|
633
646
|
);
|
634
647
|
belongsToRecord.get(hasManyName).addObject(record);
|
635
648
|
}
|