ember-data-factory-guy 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08b067285d7aad700359cc0468ef56c4271acb13
4
- data.tar.gz: 5e25e40fc8e23190e91e47b122c02af21e57fd97
3
+ metadata.gz: 7bc82d125a83024abd95b12c5f11892c76047002
4
+ data.tar.gz: e64f296ca9c2e7d82fa4d62d1e65356874ca6c5a
5
5
  SHA512:
6
- metadata.gz: cf1b499ea9ce45d723aa60b966297b0136c3f617256b57f96aedaaac768b4f693acd9c5032cf7f8e4c0ab52c763c6ad47c6ca7c43ed1146e10149110181f96cc
7
- data.tar.gz: fe67654d6644a3e6da62cd31015090deff2f970bfa5827d395c61273e9aac28bce3168db5cf66b6eb6528afd3270dccd1d7686885db6d40d6949938410aa7c6c
6
+ metadata.gz: c8e7451735f51c0511124daf19add6710e490f904e48e61eb44b22761585bd7d29e78eed73a3468a2caae46047bc8eb1f0b835cca3b07c79d87bf106647609ec
7
+ data.tar.gz: ba2d24705c6e111e00ae752a0a16dc04e94981ca2e742314f66dbe76a5c2dbdf5cb9946f2d0076e0b1ff820b1f137b473191a4ef43f91a95f3f3d6cd3c488018
data/README.md CHANGED
@@ -10,7 +10,7 @@ of ember-data-factory-guy.
10
10
  - 0.6.4 -> ember-data-1.0.0-beta.8 and under
11
11
  - 0.7.1.1 -> ember-data-1.0.0-beta.10
12
12
  - 0.8.6 -> ember-data-1.0.0-beta.11
13
- - 0.9.1 -> ember-data-1.0.0-beta.12
13
+ - 0.9.2 -> ember-data-1.0.0-beta.12
14
14
 
15
15
  **Support for fixture adapter is currently kinda broken.**
16
16
 
@@ -39,7 +39,7 @@ gem 'ember-data-factory-guy', group: test
39
39
  or for particular version:
40
40
 
41
41
  ```ruby
42
- gem 'ember-data-factory-guy', '0.9.1', group: test
42
+ gem 'ember-data-factory-guy', '0.9.2', group: test
43
43
  ```
44
44
 
45
45
  then:
@@ -74,7 +74,7 @@ or for particular version:
74
74
  "dependencies": {
75
75
  "foo-dependency": "latest",
76
76
  "other-foo-dependency": "latest",
77
- "ember-data-factory-guy": "0.9.1"
77
+ "ember-data-factory-guy": "0.9.2"
78
78
  }
79
79
  ```
80
80
 
@@ -114,7 +114,8 @@ You do not have to use the DS.FixtureAdapter. But if you do choose to use the F
114
114
  which does not run any faster, and does not handle associations as elegantly
115
115
  ( and in some cases not at all ), you may run into problems with accessing associations.
116
116
 
117
- Error: Assertion Failed: You looked up the 'projects' relationship on '<User:ember379:1>' but some of the associated records were not loaded. Either make sure they are all loaded together with the parent record, or specify that the relationship is async (`DS.hasMany({ async: true })`)
117
+ Error: Assertion Failed: You looked up the 'projects' relationship on '<User:ember379:1>'
118
+ but some of the associated records were not loaded. Either make sure they are all loaded together with the parent record, or specify that the relationship is async (`DS.hasMany({ async: true })`)
118
119
 
119
120
  If you do get these types of errors try requiring the factory_guy_has_many.js file
120
121
  ( located in dist dir and vendor dir ) AFTER you require ember-data,
@@ -226,9 +227,10 @@ the store is looking up the correct model type name
226
227
  - Can add attributes with traits ( see traits section )
227
228
 
228
229
  ```javascript
229
- // First set the store on FactoryGuy. You don't have to do this step manually if you use
230
- // FactoryGuyTestHelperMixin since this is done for you in the setup method. The following
231
- // store lookup assumes you have a namespace for your Ember app named 'App'.
230
+ // First set the store on FactoryGuy. You don't have to do this step manually
231
+ // if you use FactoryGuyTestHelperMixin since this is done for you in the setup
232
+ // method. The following store lookup assumes you have a namespace for your Ember
233
+ // app named 'App'.
232
234
  var store = App.__container__.lookup('store:main');
233
235
  FactoryGuy.setStore(store);
234
236
 
@@ -631,6 +633,9 @@ tests run as shown in the previous section (Using FactoryGuyTestMixin)**
631
633
 
632
634
  ##### handleFindQuery
633
635
  - for dealing with finding all records for a type of model with query parameters.
636
+ - can pass in fixture json, model instances or empty array
637
+
638
+ *Passing in array of fixture json*
634
639
 
635
640
  ```javascript
636
641
  // First build json for the instances you want 'returned' in your query.
@@ -641,10 +646,35 @@ tests run as shown in the previous section (Using FactoryGuyTestMixin)**
641
646
  testHelper.handleFindQuery('user', ['name', 'age'], usersJson);
642
647
 
643
648
  store.findQuery('user', {name:'Bob', age: 10}}).then(function(userInstances){
644
- /// userInstances are created from the usersJson that you passed in
649
+ // userInstances returned are created from the usersJson that you passed in
645
650
  })
646
651
  ```
647
652
 
653
+ *Passing in array of model instances*
654
+
655
+ ```js
656
+ // Create model instances
657
+ var users = FactoryGuy.makeList('user', 2, 'with_hats');
658
+
659
+ // Pass in the array of model instances as last argument
660
+ testHelper.handleFindQuery('user', ['name', 'age'], users);
661
+
662
+ store.findQuery('user', {name:'Bob', age: 10}}).then(function(userInstances){
663
+ /// userInstances will be the same of the users that were passed in
664
+ })
665
+ ```
666
+
667
+ *Passing in nothing for last argument*
668
+
669
+ ```js
670
+ // This simulates a query that returns no results
671
+ testHelper.handleFindQuery('user', ['age']);
672
+
673
+ store.findQuery('user', {age: 10000}}).then(function(userInstances){
674
+ /// userInstances will be empty
675
+ })
676
+ ```
677
+
648
678
 
649
679
  ##### handleCreate
650
680
  - options
data/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-data-factory-guy",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "authors": [
5
5
  "Daniel Sudol <dansudol@yahoo.com>",
6
6
  "Opak Alex <opak.alexandr@gmail.com>"
@@ -467,7 +467,9 @@ var FactoryGuy = {
467
467
 
468
468
  if (store.usingFixtureAdapter()) {
469
469
  store.setAssociationsForFixtureAdapter(modelType, modelName, fixture);
470
- return this.pushFixture(modelType, fixture);
470
+ fixture = FactoryGuy.pushFixture(modelType, fixture);
471
+ store.loadModelForFixtureAdapter(modelType, fixture);
472
+ return fixture;
471
473
  } else {
472
474
  return store.makeModel(modelType, fixture);
473
475
  }
@@ -648,9 +650,11 @@ var FactoryGuy = {
648
650
  setAssociationsForFixtureAdapter: function (modelType, modelName, fixture) {
649
651
  var self = this;
650
652
  var adapter = this.adapterFor('application');
653
+
651
654
  Ember.get(modelType, 'relationshipsByName').forEach(function (relationship, name) {
655
+ var hasManyRelation, belongsToRecord;
652
656
  if (relationship.kind == 'hasMany') {
653
- var hasManyRelation = fixture[relationship.key];
657
+ hasManyRelation = fixture[relationship.key];
654
658
  if (hasManyRelation) {
655
659
  $.each(fixture[relationship.key], function (index, object) {
656
660
  // used to require that the relationship was set by id,
@@ -658,17 +662,19 @@ var FactoryGuy = {
658
662
  // normalize that back to the id
659
663
  var id = object;
660
664
  if (Ember.typeOf(object) == 'object') {
665
+ FactoryGuy.pushFixture(relationship.type, object);
661
666
  id = object.id;
662
667
  hasManyRelation[index] = id;
663
668
  }
664
669
  var hasManyfixtures = adapter.fixturesForType(relationship.type);
665
- var fixture = adapter.findFixtureById(hasManyfixtures, id);
666
- fixture[modelName] = fixture.id;
670
+ var hasManyFixture = adapter.findFixtureById(hasManyfixtures, id);
671
+ hasManyFixture[modelName] = fixture.id;
672
+ self.loadModelForFixtureAdapter(relationship.type, hasManyFixture);
667
673
  });
668
674
  }
669
675
  }
670
676
  if (relationship.kind == 'belongsTo') {
671
- var belongsToRecord = fixture[relationship.key];
677
+ belongsToRecord = fixture[relationship.key];
672
678
  if (belongsToRecord) {
673
679
  if (typeof belongsToRecord == 'object') {
674
680
  FactoryGuy.pushFixture(relationship.type, belongsToRecord);
@@ -681,10 +687,29 @@ var FactoryGuy = {
681
687
  belongsTofixture[hasManyName] = [];
682
688
  }
683
689
  belongsTofixture[hasManyName].push(fixture.id);
690
+ self.loadModelForFixtureAdapter(relationship.type, belongsTofixture);
684
691
  }
685
692
  }
686
693
  });
687
694
  },
695
+
696
+ loadModelForFixtureAdapter: function(modelType, fixture) {
697
+ var storeModel = this.getById(modelType, fixture.id),
698
+ that = this;
699
+ if (!Ember.isPresent(storeModel) || storeModel.get('isEmpty')) {
700
+ Ember.run(function () {
701
+ var dup = Ember.copy(fixture, true);
702
+ that.push(modelType, fixture);
703
+ //replace relationships back to ids instead of built ember objects
704
+ Ember.get(modelType, 'relationshipsByName').forEach(function (relationship, name) {
705
+ if(fixture[relationship.key]) {
706
+ fixture[relationship.key] = dup[relationship.key];
707
+ }
708
+ });
709
+ });
710
+ }
711
+ },
712
+
688
713
  /**
689
714
  Before pushing the fixture to the store, do some preprocessing. Descend into the tree
690
715
  of object data, and convert child objects to record instances recursively.
@@ -793,9 +818,32 @@ var FactoryGuy = {
793
818
  @param {Object} payload
794
819
  */
795
820
  pushPayload: function (type, payload) {
821
+ var typeName, model;
822
+
796
823
  if (this.usingFixtureAdapter()) {
797
- var model = this.modelFor(type);
798
- FactoryGuy.pushFixture(model, payload);
824
+ if (Ember.typeOf(type) === 'string' && Ember.isPresent(payload) && Ember.isPresent(payload.id)){
825
+ //pushPayload('user', {id:..})
826
+ model = this.modelFor(type);
827
+ FactoryGuy.pushFixture(model, payload);
828
+ this.push(model, Ember.copy(payload, true));
829
+ } else if(Ember.typeOf(type) === 'object' || Ember.typeOf(payload) === 'object') {
830
+ //pushPayload({users: {id:..}}) OR pushPayload('user', {users: {id:..}})
831
+ if(Ember.isBlank(payload)){
832
+ payload = type;
833
+ }
834
+
835
+ for (var prop in payload) {
836
+ typeName = Ember.String.camelize(Ember.String.singularize(prop));
837
+ model = this.modelFor(typeName);
838
+
839
+ this.pushMany(model, Ember.makeArray( Ember.copy(payload[prop], true) ));
840
+ Ember.ArrayPolyfills.forEach.call(Ember.makeArray(payload[prop]), function(hash) {
841
+ FactoryGuy.pushFixture(model, hash);
842
+ }, this);
843
+ }
844
+ } else {
845
+ throw new Ember.Error('Assertion Failed: You cannot use `store#pushPayload` with this method signature pushPayload(' + type + ',' + payload + ')');
846
+ }
799
847
  } else {
800
848
  this._super(type, payload);
801
849
  }
@@ -882,6 +930,17 @@ var FactoryGuyTestMixin = Em.Mixin.create({
882
930
  Handling ajax GET for finding all records for a type of model.
883
931
  You can mock failed find by passing in success argument as false.
884
932
 
933
+ ```js
934
+ // Pass in the parameters you would normally pass into FactoryGuy.makeList,
935
+ // like fixture name, number of fixtures to make, and optional traits,
936
+ // or fixture options
937
+ testHelper.handleFindMany('user', 2, 'with_hats');
938
+
939
+ store.find('user').then(function(users){
940
+
941
+ });
942
+ ```
943
+
885
944
  @param {String} name name of the fixture ( or model ) to find
886
945
  @param {Number} number number of fixtures to create
887
946
  @param {String} trait optional traits (one or more)
@@ -889,39 +948,54 @@ var FactoryGuyTestMixin = Em.Mixin.create({
889
948
  */
890
949
  handleFindMany: function () {
891
950
  // make the records and load them in the store
892
- FactoryGuy.makeList.apply(FactoryGuy, arguments);
951
+ var records = FactoryGuy.makeList.apply(FactoryGuy, arguments);
893
952
  var name = arguments[0];
894
953
  var modelName = FactoryGuy.lookupModelForFixtureName(name);
895
954
  var responseJson = {};
896
- responseJson[modelName] = [];
955
+ var json = records.map(function(record) {return record.toJSON({includeId: true})});
956
+ responseJson[modelName.pluralize()] = json;
897
957
  var url = this.buildURL(modelName);
898
- // mock the ajax call, but return nothing, since the records will be
899
- // retrieved from the store where they were just loaded above
900
958
  this.stubEndpointForHttpRequest(url, responseJson);
901
959
  },
902
960
  /**
903
961
  Handling ajax GET for finding all records for a type of model with query parameters.
904
962
 
963
+ First variation = pass in model instances
905
964
  ```js
906
- // First build json for the instances you want 'returned' in your query.
907
- var usersJson = FactoryGuy.buildList('user', 2);
908
965
 
909
- // Pass in the parameters you will search on ( in this case 'name' and 'age' ) as an array,
910
- // in the second argument.
911
- testHelper.handleFindQuery('user', ['name', 'age'], usersJson);
966
+ // Create model instances
967
+ var users = FactoryGuy.makeList('user', 2, 'with_hats');
968
+
969
+ // Pass in the array of model instances as last argument
970
+ testHelper.handleFindQuery('user', ['name', 'age'], users);
912
971
 
913
972
  store.findQuery('user', {name:'Bob', age: 10}}).then(function(userInstances){
914
- /// userInstances were created from the usersJson that you passed in
973
+ /// userInstances will be the same of the users that were passed in
915
974
  })
916
975
  ```
917
976
 
918
- The model instances will be created from the json you have passed in.
977
+ Third variation - pass in nothing for last argument
978
+ ```js
979
+ // This simulates a query that returns no results
980
+ testHelper.handleFindQuery('user', ['age']);
981
+
982
+ store.findQuery('user', {age: 10000}}).then(function(userInstances){
983
+ /// userInstances will be empty
984
+ })
985
+ ```
919
986
 
920
987
  @param {String} modelName name of the mode like 'user' for User model type
921
988
  @param {String} searchParams the parameters that will be queried
922
- @param {Object} json fixture json used to build the resulting modelType instances
989
+ @param {Array} array of DS.Model records to be 'returned' by query
923
990
  */
924
- handleFindQuery: function (modelName, searchParams, json) {
991
+ handleFindQuery: function (modelName, searchParams, records) {
992
+ Ember.assert('The second argument of searchParams must be an array',Em.typeOf(searchParams) == 'array')
993
+ if (records) {
994
+ Ember.assert('The third argument ( records ) must be an array - found type:' + Em.typeOf(records), Em.typeOf(records) == 'array')
995
+ } else {
996
+ records = []
997
+ }
998
+ var json = records.map(function(record) {return record.toJSON({includeId: true})})
925
999
  var responseJson = {};
926
1000
  responseJson[modelName.pluralize()] = json;
927
1001
  var url = this.buildURL(modelName);
@@ -462,7 +462,9 @@ var FactoryGuy = {
462
462
 
463
463
  if (store.usingFixtureAdapter()) {
464
464
  store.setAssociationsForFixtureAdapter(modelType, modelName, fixture);
465
- return this.pushFixture(modelType, fixture);
465
+ fixture = FactoryGuy.pushFixture(modelType, fixture);
466
+ store.loadModelForFixtureAdapter(modelType, fixture);
467
+ return fixture;
466
468
  } else {
467
469
  return store.makeModel(modelType, fixture);
468
470
  }
@@ -594,7 +596,7 @@ var FactoryGuy = {
594
596
  * Most of the work of making the model from the json fixture is going on here.
595
597
  * @param modelType
596
598
  * @param fixture
597
- * @returns {*}
599
+ * @returns {DS.Model} instance of DS.Model
598
600
  */
599
601
  makeModel: function (modelType, fixture) {
600
602
  var store = this,
@@ -643,9 +645,11 @@ var FactoryGuy = {
643
645
  setAssociationsForFixtureAdapter: function (modelType, modelName, fixture) {
644
646
  var self = this;
645
647
  var adapter = this.adapterFor('application');
648
+
646
649
  Ember.get(modelType, 'relationshipsByName').forEach(function (relationship, name) {
650
+ var hasManyRelation, belongsToRecord;
647
651
  if (relationship.kind == 'hasMany') {
648
- var hasManyRelation = fixture[relationship.key];
652
+ hasManyRelation = fixture[relationship.key];
649
653
  if (hasManyRelation) {
650
654
  $.each(fixture[relationship.key], function (index, object) {
651
655
  // used to require that the relationship was set by id,
@@ -653,17 +657,19 @@ var FactoryGuy = {
653
657
  // normalize that back to the id
654
658
  var id = object;
655
659
  if (Ember.typeOf(object) == 'object') {
660
+ FactoryGuy.pushFixture(relationship.type, object);
656
661
  id = object.id;
657
662
  hasManyRelation[index] = id;
658
663
  }
659
664
  var hasManyfixtures = adapter.fixturesForType(relationship.type);
660
- var fixture = adapter.findFixtureById(hasManyfixtures, id);
661
- fixture[modelName] = fixture.id;
665
+ var hasManyFixture = adapter.findFixtureById(hasManyfixtures, id);
666
+ hasManyFixture[modelName] = fixture.id;
667
+ self.loadModelForFixtureAdapter(relationship.type, hasManyFixture);
662
668
  });
663
669
  }
664
670
  }
665
671
  if (relationship.kind == 'belongsTo') {
666
- var belongsToRecord = fixture[relationship.key];
672
+ belongsToRecord = fixture[relationship.key];
667
673
  if (belongsToRecord) {
668
674
  if (typeof belongsToRecord == 'object') {
669
675
  FactoryGuy.pushFixture(relationship.type, belongsToRecord);
@@ -676,10 +682,29 @@ var FactoryGuy = {
676
682
  belongsTofixture[hasManyName] = [];
677
683
  }
678
684
  belongsTofixture[hasManyName].push(fixture.id);
685
+ self.loadModelForFixtureAdapter(relationship.type, belongsTofixture);
679
686
  }
680
687
  }
681
688
  });
682
689
  },
690
+
691
+ loadModelForFixtureAdapter: function(modelType, fixture) {
692
+ var storeModel = this.getById(modelType, fixture.id),
693
+ that = this;
694
+ if (!Ember.isPresent(storeModel) || storeModel.get('isEmpty')) {
695
+ Ember.run(function () {
696
+ var dup = Ember.copy(fixture, true);
697
+ that.push(modelType, fixture);
698
+ //replace relationships back to ids instead of built ember objects
699
+ Ember.get(modelType, 'relationshipsByName').forEach(function (relationship, name) {
700
+ if(fixture[relationship.key]) {
701
+ fixture[relationship.key] = dup[relationship.key];
702
+ }
703
+ });
704
+ });
705
+ }
706
+ },
707
+
683
708
  /**
684
709
  Before pushing the fixture to the store, do some preprocessing. Descend into the tree
685
710
  of object data, and convert child objects to record instances recursively.
@@ -788,9 +813,32 @@ var FactoryGuy = {
788
813
  @param {Object} payload
789
814
  */
790
815
  pushPayload: function (type, payload) {
816
+ var typeName, model;
817
+
791
818
  if (this.usingFixtureAdapter()) {
792
- var model = this.modelFor(type);
793
- FactoryGuy.pushFixture(model, payload);
819
+ if (Ember.typeOf(type) === 'string' && Ember.isPresent(payload) && Ember.isPresent(payload.id)){
820
+ //pushPayload('user', {id:..})
821
+ model = this.modelFor(type);
822
+ FactoryGuy.pushFixture(model, payload);
823
+ this.push(model, Ember.copy(payload, true));
824
+ } else if(Ember.typeOf(type) === 'object' || Ember.typeOf(payload) === 'object') {
825
+ //pushPayload({users: {id:..}}) OR pushPayload('user', {users: {id:..}})
826
+ if(Ember.isBlank(payload)){
827
+ payload = type;
828
+ }
829
+
830
+ for (var prop in payload) {
831
+ typeName = Ember.String.camelize(Ember.String.singularize(prop));
832
+ model = this.modelFor(typeName);
833
+
834
+ this.pushMany(model, Ember.makeArray( Ember.copy(payload[prop], true) ));
835
+ Ember.ArrayPolyfills.forEach.call(Ember.makeArray(payload[prop]), function(hash) {
836
+ FactoryGuy.pushFixture(model, hash);
837
+ }, this);
838
+ }
839
+ } else {
840
+ throw new Ember.Error('Assertion Failed: You cannot use `store#pushPayload` with this method signature pushPayload(' + type + ',' + payload + ')');
841
+ }
794
842
  } else {
795
843
  this._super(type, payload);
796
844
  }
@@ -877,6 +925,17 @@ var FactoryGuyTestMixin = Em.Mixin.create({
877
925
  Handling ajax GET for finding all records for a type of model.
878
926
  You can mock failed find by passing in success argument as false.
879
927
 
928
+ ```js
929
+ // Pass in the parameters you would normally pass into FactoryGuy.makeList,
930
+ // like fixture name, number of fixtures to make, and optional traits,
931
+ // or fixture options
932
+ testHelper.handleFindMany('user', 2, 'with_hats');
933
+
934
+ store.find('user').then(function(users){
935
+
936
+ });
937
+ ```
938
+
880
939
  @param {String} name name of the fixture ( or model ) to find
881
940
  @param {Number} number number of fixtures to create
882
941
  @param {String} trait optional traits (one or more)
@@ -884,39 +943,54 @@ var FactoryGuyTestMixin = Em.Mixin.create({
884
943
  */
885
944
  handleFindMany: function () {
886
945
  // make the records and load them in the store
887
- FactoryGuy.makeList.apply(FactoryGuy, arguments);
946
+ var records = FactoryGuy.makeList.apply(FactoryGuy, arguments);
888
947
  var name = arguments[0];
889
948
  var modelName = FactoryGuy.lookupModelForFixtureName(name);
890
949
  var responseJson = {};
891
- responseJson[modelName] = [];
950
+ var json = records.map(function(record) {return record.toJSON({includeId: true})});
951
+ responseJson[modelName.pluralize()] = json;
892
952
  var url = this.buildURL(modelName);
893
- // mock the ajax call, but return nothing, since the records will be
894
- // retrieved from the store where they were just loaded above
895
953
  this.stubEndpointForHttpRequest(url, responseJson);
896
954
  },
897
955
  /**
898
956
  Handling ajax GET for finding all records for a type of model with query parameters.
899
957
 
958
+ First variation = pass in model instances
900
959
  ```js
901
- // First build json for the instances you want 'returned' in your query.
902
- var usersJson = FactoryGuy.buildList('user', 2);
903
960
 
904
- // Pass in the parameters you will search on ( in this case 'name' and 'age' ) as an array,
905
- // in the second argument.
906
- testHelper.handleFindQuery('user', ['name', 'age'], usersJson);
961
+ // Create model instances
962
+ var users = FactoryGuy.makeList('user', 2, 'with_hats');
963
+
964
+ // Pass in the array of model instances as last argument
965
+ testHelper.handleFindQuery('user', ['name', 'age'], users);
907
966
 
908
967
  store.findQuery('user', {name:'Bob', age: 10}}).then(function(userInstances){
909
- /// userInstances were created from the usersJson that you passed in
968
+ /// userInstances will be the same of the users that were passed in
910
969
  })
911
970
  ```
912
971
 
913
- The model instances will be created from the json you have passed in.
972
+ Third variation - pass in nothing for last argument
973
+ ```js
974
+ // This simulates a query that returns no results
975
+ testHelper.handleFindQuery('user', ['age']);
976
+
977
+ store.findQuery('user', {age: 10000}}).then(function(userInstances){
978
+ /// userInstances will be empty
979
+ })
980
+ ```
914
981
 
915
982
  @param {String} modelName name of the mode like 'user' for User model type
916
983
  @param {String} searchParams the parameters that will be queried
917
- @param {Object} json fixture json used to build the resulting modelType instances
984
+ @param {Array} array of DS.Model records to be 'returned' by query
918
985
  */
919
- handleFindQuery: function (modelName, searchParams, json) {
986
+ handleFindQuery: function (modelName, searchParams, records) {
987
+ Ember.assert('The second argument of searchParams must be an array',Em.typeOf(searchParams) == 'array')
988
+ if (records) {
989
+ Ember.assert('The third argument ( records ) must be an array - found type:' + Em.typeOf(records), Em.typeOf(records) == 'array')
990
+ } else {
991
+ records = []
992
+ }
993
+ var json = records.map(function(record) {return record.toJSON({includeId: true})})
920
994
  var responseJson = {};
921
995
  responseJson[modelName.pluralize()] = json;
922
996
  var url = this.buildURL(modelName);