ember-data-factory-guy 0.7.0 → 0.7.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.
@@ -503,7 +503,7 @@ DS.Store.reopen({
503
503
  modelType = store.modelFor(modelName);
504
504
  }
505
505
  model = store.push(modelName, fixture);
506
- // store.setAssociationsForRESTAdapter(modelType, modelName, model);
506
+ store.setAssociationsForRESTAdapter(modelType, modelName, model);
507
507
  });
508
508
  return model;
509
509
  }
@@ -551,14 +551,14 @@ DS.Store.reopen({
551
551
  @param {String} modelName model name like 'user'
552
552
  @param {Object} fixture to check for needed association assignments
553
553
  */
554
- setAssociationsForFixtureAdapter: function(modelType, modelName, fixture) {
554
+ setAssociationsForFixtureAdapter: function (modelType, modelName, fixture) {
555
555
  var self = this;
556
556
  var adapter = this.adapterFor('application');
557
557
  Ember.get(modelType, 'relationshipsByName').forEach(function (name, relationship) {
558
558
  if (relationship.kind == 'hasMany') {
559
559
  var hasManyRelation = fixture[relationship.key];
560
560
  if (hasManyRelation) {
561
- $.each(fixture[relationship.key], function(index,object) {
561
+ $.each(fixture[relationship.key], function (index, object) {
562
562
  // used to require that the relationship was set by id,
563
563
  // but now, you can set it as the json object, and this will
564
564
  // normalize that back to the id
@@ -581,7 +581,6 @@ DS.Store.reopen({
581
581
  FactoryGuy.pushFixture(relationship.type, belongsToRecord);
582
582
  fixture[relationship.key] = belongsToRecord.id;
583
583
  }
584
- console.log('belongsToRecord',belongsToRecord)
585
584
  var hasManyName = self.findHasManyRelationshipNameForFixtureAdapter(relationship.type, relationship.parentType);
586
585
  var belongsToFixtures = adapter.fixturesForType(relationship.type);
587
586
  var belongsTofixture = adapter.findFixtureById(belongsToFixtures, fixture[relationship.key]);
@@ -598,8 +597,8 @@ DS.Store.reopen({
598
597
  Before pushing the fixture to the store, do some preprocessing.
599
598
 
600
599
  If its a belongs to association, and the fixture has an object there,
601
- then push that model to the store and set the id of that new model
602
- as the attribute value in the fixture
600
+ then push that model to the store and set the id of that new model
601
+ as the attribute value in the fixture
603
602
 
604
603
  @param modelType
605
604
  @param fixture
@@ -618,18 +617,71 @@ DS.Store.reopen({
618
617
  var hasManyRecords = fixture[relationship.key];
619
618
  // if the records are objects and not instances they need to be converted to
620
619
  // instances
621
- if (Ember.typeOf(hasManyRecords) == 'array' && Ember.typeOf(hasManyRecords[0]) == 'object') {
622
- var records = Em.A()
623
- hasManyRecords.forEach(function(record) {
624
- var record = store.push(relationship.type, record);
625
- records.push(record);
626
- })
627
- fixture[relationship.key] = records;
620
+ if (Ember.typeOf(hasManyRecords) == 'array') {
621
+ if (Ember.typeOf(hasManyRecords[0]) == 'object') {
622
+ var records = Em.A()
623
+ hasManyRecords.map(function (object) {
624
+ var record = store.push(relationship.type, object);
625
+ records.push(record);
626
+ return record;
627
+ })
628
+ fixture[relationship.key] = records;
629
+ }
628
630
  }
629
631
  }
630
632
  })
631
633
  },
632
634
 
635
+ /**
636
+ For the REST type models:
637
+
638
+ For example if a user hasMany projects, then set the user
639
+ on each project that the user hasMany of, so that the project
640
+ now has the belongsTo user association setup. As in this scenario:
641
+
642
+ ```js
643
+ var project = store.makeFixture('project');
644
+ var user = store.makeFixture('user', {projects: [project]});
645
+ ```
646
+
647
+ Or if you make a user, then a project with that user, then set the project
648
+ in the users list of 'projects' it hasMany of. As in this scenario:
649
+
650
+ ```js
651
+ var user = store.makeFixture('user');
652
+ var project = store.makeFixture('project', {user: user});
653
+ ```
654
+
655
+ NOTE:
656
+ As of ember-data-1.0.0-beta.10, this method is only needed because the belongsTo
657
+ is not assigned when there is a self referential polymorphic has many association.
658
+
659
+ @param {DS.Model} modelType model type like 'User'
660
+ @param {String} modelName model name like 'user'
661
+ @param {DS.Model} model model to check for needed association assignments
662
+ */
663
+ setAssociationsForRESTAdapter: function (modelType, modelName, model) {
664
+ var self = this;
665
+ Ember.get(modelType, 'relationshipsByName').forEach(function (name, relationship) {
666
+ if (relationship.kind == 'hasMany') {
667
+ var children = model.get(name) || [];
668
+ children.forEach(function (child) {
669
+ var belongsToName = self.findRelationshipName(
670
+ 'belongsTo',
671
+ child.constructor,
672
+ model
673
+ );
674
+ var inverseName = (relationship.options && relationship.options.inverse)
675
+ if (belongsToName || inverseName) {
676
+ child.set(belongsToName || inverseName, model);
677
+ }
678
+ })
679
+ }
680
+
681
+ })
682
+ },
683
+
684
+
633
685
  findRelationshipName: function (kind, belongToModelType, childModel) {
634
686
  var relationshipName;
635
687
  Ember.get(belongToModelType, 'relationshipsByName').forEach(
@@ -179,11 +179,11 @@
179
179
  @param {Object} options a hash of options
180
180
  @return {Ember.computed} relationship
181
181
  */
182
- DS.hasMany = function(type, options) {
183
- if (typeof type === 'object') {
184
- options = type;
185
- type = undefined;
186
- }
187
- return hasRelationship(type, options);
188
- }
182
+ // DS.hasMany = function(type, options) {
183
+ // if (typeof type === 'object') {
184
+ // options = type;
185
+ // type = undefined;
186
+ // }
187
+ // return hasRelationship(type, options);
188
+ // }
189
189
  }).call();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ember-data-factory-guy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Sudol
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-15 00:00:00.000000000 Z
12
+ date: 2014-10-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Easily create Fixtures for Ember Data
15
15
  email:
@@ -19,8 +19,8 @@ executables: []
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
- - .gitignore
23
- - .travis.yml
22
+ - ".gitignore"
23
+ - ".travis.yml"
24
24
  - Gruntfile.js
25
25
  - LICENSE
26
26
  - README.md
@@ -45,6 +45,7 @@ files:
45
45
  - tests/rest_adapter_factory_test.js
46
46
  - tests/store_test.js
47
47
  - tests/support/factories/company_factory.js
48
+ - tests/support/factories/group_factory.js
48
49
  - tests/support/factories/hat_factory.js
49
50
  - tests/support/factories/material_factory.js
50
51
  - tests/support/factories/profile_factory.js
@@ -54,6 +55,7 @@ files:
54
55
  - tests/support/libs/mockjax.js
55
56
  - tests/support/libs/sinon.js
56
57
  - tests/support/models/company.js
58
+ - tests/support/models/group.js
57
59
  - tests/support/models/hat.js
58
60
  - tests/support/models/material.js
59
61
  - tests/support/models/profile.js
@@ -74,12 +76,12 @@ require_paths:
74
76
  - lib
75
77
  required_ruby_version: !ruby/object:Gem::Requirement
76
78
  requirements:
77
- - - '>='
79
+ - - ">="
78
80
  - !ruby/object:Gem::Version
79
81
  version: '0'
80
82
  required_rubygems_version: !ruby/object:Gem::Requirement
81
83
  requirements:
82
- - - '>='
84
+ - - ">="
83
85
  - !ruby/object:Gem::Version
84
86
  version: 1.3.6
85
87
  requirements: []