ember-data-factory-guy 0.8.7 → 0.9.0

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: d3a176593875afbfb16b0b27f882eacb3d40d373
4
- data.tar.gz: 9d15621eb85ee8fa3dcd1a26c84324accb08c71a
3
+ metadata.gz: b0f49b633dc4e0517c3f1ad408bdd1db344c57a3
4
+ data.tar.gz: e4eded2ac3ad0442f84e6baef55f3f15fe465126
5
5
  SHA512:
6
- metadata.gz: 2ea89b1a73e315d4b25fa3d502bbbb52a76b0b57fdd616010f48f4406cb1c5458d5f1d6644a7d57fd226653b40fecb2e5cf812a4e9363500ecd0e5753a9f135b
7
- data.tar.gz: 0bc86475042ac771c1771a37fbd70f3b89dcd0bdb88a800e9f581cf88bae009e2b69548be892f44d04c3a2a686049561d96a8f23442e609291858eb3e36a8e23
6
+ metadata.gz: 685ca7f54f663260a32f07803e616a774314917f17dd50fd8f95233b4712deaabb6dca324237ac1cd7a742fd3f4a64b1aa16d9d65ce1ca01d00097afca66bfaa
7
+ data.tar.gz: 41939f3df2b268972abfaa53f42c2eb7a6fcf73205631af9b9ea06b775d5d2dfd2d34c08da15965f893e12b315646e3016265c54f2f8f2e6e949383842e01b0c
data/Gruntfile.js CHANGED
@@ -45,8 +45,8 @@ module.exports = function(grunt) {
45
45
  },
46
46
  test: {
47
47
  src: [
48
- 'tests/support/factories/*.js',
49
48
  'tests/support/models/*.js',
49
+ 'tests/support/factories/*.js',
50
50
  'tests/support/libs/*.js'],
51
51
  dest: "tests/test_setup.js"
52
52
  }
data/README.md CHANGED
@@ -2,24 +2,22 @@
2
2
 
3
3
  *NOTE*
4
4
 
5
- ember-data is changing the way they are doing relationships in 1.0.0-beta.10 and above
6
- so, if you are using ember-data-1.0.0-beta.8 and earlier, then be sure to use version 0.6.4
7
- of ember-data-factory-guy.
5
+ ember-data is changing the way they are doing relationships in 1.0.0-beta.10 and above
6
+ so, if you are using ember-data-1.0.0-beta.8 and earlier, then be sure to use version 0.6.4
7
+ of ember-data-factory-guy.
8
8
 
9
9
  - Versions:
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.8.7 -> ember-data-1.0.0-beta.12
13
+ - 0.9.0 -> ember-data-1.0.0-beta.12
14
14
 
15
- **For versions ( 0.7.1 -> 0.8.6 ), support for the fixture adapter is currently broken.**
15
+ **Support for fixture adapter is currently kinda broken.**
16
16
 
17
- *Version 0.8.6 has many bug fixes and improvements that the earlier versions don't have, so
18
- hopefully you can switch to newer version of ember-data and therefore the best
19
- ember-data-factory-guy version, but if not, send me bug report and I will try and go back
20
- and fix the older version you are using.*
17
+ **Version 0.9.0 expects you to no longer use store.makeFixture explicitly in your tests
18
+ but rather use the testHelper.make from FactoryGuyTestHelperMixin instead. If this is not the case,
19
+ just add a FactoryGuy.setStore(store) somewhere in your code before you start making fixtures.**
21
20
 
22
- **Version 0.8.0 introduces amd and commonjs support**
23
21
 
24
22
  ## Using with Ember Cli
25
23
  - https://github.com/igorrKurr/ember-cli-factory-guy-example
@@ -41,7 +39,7 @@ gem 'ember-data-factory-guy', group: test
41
39
  or for particular version:
42
40
 
43
41
  ```ruby
44
- gem 'ember-data-factory-guy', '0.8.6', group: test
42
+ gem 'ember-data-factory-guy', '0.9.0', group: test
45
43
  ```
46
44
 
47
45
  then:
@@ -76,7 +74,7 @@ or for particular version:
76
74
  "dependencies": {
77
75
  "foo-dependency": "latest",
78
76
  "other-foo-dependency": "latest",
79
- "ember-data-factory-guy": "0.8.6"
77
+ "ember-data-factory-guy": "0.9.0"
80
78
  }
81
79
  ```
82
80
 
@@ -218,28 +216,34 @@ the store is looking up the correct model type name
218
216
 
219
217
 
220
218
  ### Using Factories
219
+ - FactorGuy.setStore
220
+ - pass in the store instance to FactoryGuy before making fixtures.
221
221
  - FactoryGuy.build
222
222
  - Builds json
223
- - store.makeFixture
223
+ - FactoryGuy.make
224
224
  - Loads model instance into the store
225
225
  - Can override default attributes by passing in a hash
226
226
  - Can add attributes with traits ( see traits section )
227
227
 
228
228
  ```javascript
229
-
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.
231
+ var store = this.get('container').lookup('store:main');
232
+ FactoryGuy.setStore(store);
233
+
230
234
  // returns json
231
235
  var json = FactoryGuy.build('user');
232
236
  json // => {id: 1, name: 'Dude', style: 'normal'}
233
237
 
234
238
  // returns a User instance that is loaded into your application's store
235
- var user = store.makeFixture('user');
236
- user.toJSON() // => {id: 2, name: 'Dude', style: 'normal'}
239
+ var user = FactoryGuy.make('user');
240
+ user.toJSON({includeId: true}) // => {id: 2, name: 'Dude', style: 'normal'}
237
241
 
238
242
  var json = FactoryGuy.build('admin');
239
243
  json // => {id: 3, name: 'Admin', style: 'super'}
240
244
 
241
- var user = store.makeFixture('admin');
242
- user.toJSON() // => {id: 4, name: 'Admin', style: 'super'}
245
+ var user = FactoryGuy.make('admin');
246
+ user.toJSON({includeId: true}) // => {id: 4, name: 'Admin', style: 'super'}
243
247
 
244
248
  ```
245
249
 
@@ -281,7 +285,7 @@ You can override the default attributes by passing in a hash
281
285
  var json = FactoryGuy.build('user');
282
286
  json.name // => 'User1'
283
287
 
284
- var user = store.makeFixture('user');
288
+ var user = FactoryGuy.make('user');
285
289
  user.get('name') // => 'User2'
286
290
 
287
291
  ```
@@ -299,7 +303,7 @@ You can override the default attributes by passing in a hash
299
303
  var json = FactoryGuy.build('special_project');
300
304
  json.title // => 'Project #1'
301
305
 
302
- var project = store.makeFixture('special_project');
306
+ var project = FactoryGuy.make('special_project');
303
307
  project.get('title') // => 'Project #2'
304
308
 
305
309
  ```
@@ -324,7 +328,7 @@ You can override the default attributes by passing in a hash
324
328
  json.name // => 'User1'
325
329
  json.style // => 'funny User1'
326
330
 
327
- var user = store.makeFixture('funny_user');
331
+ var user = FactoryGuy.make('funny_user');
328
332
  user.get('name') // => 'User2'
329
333
  user.get('style') // => 'funny User2'
330
334
 
@@ -353,7 +357,7 @@ You can override the default attributes by passing in a hash
353
357
  json.name // => 'Big Guy'
354
358
  json.style // => 'Friendly'
355
359
 
356
- var user = store.makeFixture('user', 'big', 'friendly');
360
+ var user = FactoryGuy.make('user', 'big', 'friendly');
357
361
  user.get('name') // => 'Big Guy'
358
362
  user.get('style') // => 'Friendly'
359
363
 
@@ -364,7 +368,7 @@ attributes will override any trait attributes or default attributes
364
368
 
365
369
  ```javascript
366
370
 
367
- var user = store.makeFixture('user', 'big', 'friendly', {name: 'Dave'});
371
+ var user = FactoryGuy.make('user', 'big', 'friendly', {name: 'Dave'});
368
372
  user.get('name') // => 'Dave'
369
373
  user.get('style') // => 'Friendly'
370
374
 
@@ -391,7 +395,7 @@ attributes will override any trait attributes or default attributes
391
395
  // create user model with default attributes
392
396
  user: {}
393
397
  },
394
- project_with_dude: {
398
+ project_with_bob: {
395
399
  // create user model with custom attributes
396
400
  user: {name: 'Bob'}
397
401
  },
@@ -404,10 +408,10 @@ attributes will override any trait attributes or default attributes
404
408
  var json = FactoryGuy.build('project_with_user');
405
409
  json.user // => {id:1, name: 'Dude', style: 'normal'}
406
410
 
407
- var json = FactoryGuy.build('project_with_dude');
408
- json.user // => {id:1, name: 'Dude', style: 'normal'}
411
+ var json = FactoryGuy.build('project_with_bob');
412
+ json.user // => {id:1, name: 'Bob', style: 'normal'}
409
413
 
410
- var project = store.makeFixture('project_with_admin');
414
+ var project = FactoryGuy.make('project_with_admin');
411
415
  project.get('user.name') // => 'Admin'
412
416
  project.get('user.style') // => 'super'
413
417
 
@@ -424,8 +428,8 @@ attributes will override any trait attributes or default attributes
424
428
  }
425
429
  });
426
430
 
427
- var user = store.makeFixture('project', 'with_user');
428
- project.get('user').toJSON() // => {id:1, name: 'Dude', style: 'normal'}
431
+ var user = FactoryGuy.make('project', 'with_user');
432
+ project.get('user').toJSON({includeId: true}) // => {id:1, name: 'Dude', style: 'normal'}
429
433
 
430
434
  ```
431
435
 
@@ -433,10 +437,10 @@ attributes will override any trait attributes or default attributes
433
437
  ##### Setup belongsTo associations manually
434
438
 
435
439
  ```javascript
436
- var user = store.makeFixture('user');
437
- var project = store.makeFixture('project', {user: user});
440
+ var user = FactoryGuy.make('user');
441
+ var project = FactoryGuy.make('project', {user: user});
438
442
 
439
- project.get('user').toJSON() // => {id:1, name: 'Dude', style: 'normal'}
443
+ project.get('user').toJSON({includeId: true}) // => {id:1, name: 'Dude', style: 'normal'}
440
444
  ```
441
445
 
442
446
  *Note that though you are setting the 'user' belongsTo association on a project,
@@ -456,7 +460,7 @@ the reverse user hasMany 'projects' association is being setup for you on the us
456
460
  user_with_projects: { FactoryGuy.hasMany('project', 2) }
457
461
  });
458
462
 
459
- var user = store.makeFixture('user_with_projects');
463
+ var user = FactoryGuy.make('user_with_projects');
460
464
  user.get('projects.length') // => 2
461
465
 
462
466
  ```
@@ -473,7 +477,7 @@ the reverse user hasMany 'projects' association is being setup for you on the us
473
477
  }
474
478
  });
475
479
 
476
- var user = store.makeFixture('user', 'with_projects');
480
+ var user = FactoryGuy.make('user', 'with_projects');
477
481
  user.get('projects.length') // => 2
478
482
 
479
483
  ```
@@ -481,14 +485,14 @@ the reverse user hasMany 'projects' association is being setup for you on the us
481
485
  ##### Setup hasMany associations manually
482
486
 
483
487
  ```javascript
484
- var project1 = store.makeFixture('project');
485
- var project2 = store.makeFixture('project');
486
- var user = store.makeFixture('user', {projects: [project1,project2]});
488
+ var project1 = FactoryGuy.make('project');
489
+ var project2 = FactoryGuy.make('project');
490
+ var user = FactoryGuy.make('user', {projects: [project1,project2]});
487
491
  user.get('projects.length') // => 2
488
492
 
489
493
  // or
490
494
  var projects = store.makeList('project', 2);
491
- var user = store.makeFixture('user', {projects: projects});
495
+ var user = FactoryGuy.make('user', {projects: projects});
492
496
  user.get('projects.length') // => 2
493
497
 
494
498
  ```
@@ -525,8 +529,8 @@ the reverse 'user' belongsTo association is being setup for you on the project
525
529
  ```javascript
526
530
  var users = store.makeList('user', 2)
527
531
  users.get('length') // => 2
528
- users[0].toJSON() // => {id: 3, name: 'User3', style: 'normal'}
529
- users[1].toJSON() // => {id: 4, name: 'User4', style: 'normal'}
532
+ users[0].toJSON({includeId: true}) // => {id: 3, name: 'User3', style: 'normal'}
533
+ users[1].toJSON({includeId: true}) // => {id: 4, name: 'User4', style: 'normal'}
530
534
 
531
535
  ```
532
536
 
@@ -550,21 +554,23 @@ TestHelper = Ember.Object.createWithMixins(FactoryGuyTestMixin);
550
554
 
551
555
  // Then in your tests you can use it like so:
552
556
 
553
- var testHelper, store;
557
+ var testHelper, store, make;
554
558
 
555
559
  module('User Model', {
556
560
  setup: function() {
557
561
  testHelper = TestHelper.setup(App);
558
562
  store = testHelper.getStore();
563
+ // You could at this point, make fixtures with testHelper.make,
564
+ // but to be even more concise try this shortcut method to your tests
565
+ make = testHelper.make.bind(testHelper)
566
+ // or if your running in phantomjs and it does not support bind method try this:
567
+ // make = function() {return testHelper.make.apply(testHelper,arguments)}
559
568
  },
560
569
  teardown: function() {
561
570
  Em.run(function() { testHelper.teardown(); });
562
571
  }
563
572
  });
564
573
 
565
- // You could at this point, make fixtures with testHelper.make('user'), but
566
- // to be even more concise in tests you could add this method to your tests
567
- var make = function(name, opts) { return testHelper.make(name, opts); }
568
574
 
569
575
  // assuming your default adapter is ActiveModelAdapter or RESTAdapter
570
576
  test("make a user using your applications default adapter", function() {
@@ -685,12 +691,19 @@ match and or returns options.
685
691
 
686
692
 
687
693
  ##### handleUpdate
694
+ - handleUpdate(model)
695
+ - handleUpdate(modelType, id)
688
696
 
689
697
  *success case is the default*
690
698
 
691
699
  ```javascript
692
- var profile = store.makeFixture('profile');
693
- testHelper.handleUpdate('profile', profile.id);
700
+ var profile = FactoryGuy.make('profile');
701
+
702
+ // Simplest way is to pass in the model that will be updated ( if you have it available )
703
+ testHelper.handleUpdate(profile);
704
+
705
+ // If the model is not available, pass in the modelType and the id ( if you know it )
706
+ testHelper.handleUpdate('profile', 1);
694
707
 
695
708
  profile.set('description', 'good value');
696
709
  profile.save() //=> will succeed
@@ -699,9 +712,12 @@ match and or returns options.
699
712
  *mocking a failed update*
700
713
 
701
714
  ```javascript
702
- var profile = store.makeFixture('profile');
715
+ var profile = FactoryGuy.make('profile');
716
+
703
717
  // set the succeed flag to 'false'
704
718
  testHelper.handleUpdate('profile', profile.id, false);
719
+ // or
720
+ testHelper.handleUpdate(profile, false);
705
721
 
706
722
  profile.set('description', 'bad value');
707
723
  profile.save() //=> will fail
@@ -714,7 +730,7 @@ match and or returns options.
714
730
  *success case is the default*
715
731
 
716
732
  ```javascript
717
- var profile = store.makeFixture('profile');
733
+ var profile = FactoryGuy.make('profile');
718
734
  testHelper.handleDelete('profile', profile.id);
719
735
 
720
736
  profile.destroyRecord() // => will succeed
@@ -723,7 +739,7 @@ match and or returns options.
723
739
  *mocking a failed delete*
724
740
 
725
741
  ```javascript
726
- var profile = store.makeFixture('profile');
742
+ var profile = FactoryGuy.make('profile');
727
743
  // set the succeed flag to 'false'
728
744
  testHelper.handleDelete('profile', profile.id, false);
729
745
 
@@ -746,12 +762,12 @@ ViewTestHelper = Ember.Object.createWithMixins(FactoryGuyTestMixin,{
746
762
  }
747
763
  }
748
764
 
749
- var viewHelper;
765
+ var viewHelper, user;
750
766
 
751
767
  module('User View', {
752
768
  setup: function() {
753
769
  viewHelper = ViewTestHelper.setup(App); // set up helper
754
- var user = viewHelper.make('user'); // create a user in the store
770
+ user = viewHelper.make('user'); // create a user in the store
755
771
  visit('/users/'+user.id); // visit the users route
756
772
  },
757
773
  teardown: function() {
@@ -766,10 +782,9 @@ test("Creates new project", function() {
766
782
  click('.add-div div:contains(New Project)')
767
783
  fillIn('.add-project input', newProjectName)
768
784
 
769
- // Remember, you only need to pass in attributes of the model you expect
770
- // to create in your application. You do not need to include belongsTo records,
771
- // as in this case the 'user' belongsTo association
772
- viewHelper.handleCreate('project', {name: newProjectName})
785
+ // Remember, this is for handling an exact match, if you did not care about
786
+ // matching attributes, you could just do: viewHelper.handleCreate('project')
787
+ viewHelper.handleCreate('project', {match:{name: newProjectName, user:user}})
773
788
 
774
789
  /**
775
790
  Let's say that clicking this '.add-project .link', triggers action in the view to
@@ -796,9 +811,9 @@ test("Creates new project", function() {
796
811
  ### Using DS.Fixture adapter
797
812
 
798
813
  - Not recommended
799
- - store.makeFixture ... creates model in the store and returns json
814
+ - FactoryGuy.make ... creates model in the store and returns json
800
815
 
801
- Technically when you call store.makeFixture with a store using the DS.FixtureAdapter,
816
+ Technically when you call FactoryGuy.make with a store using the DS.FixtureAdapter,
802
817
  the fixture is actually added to the models FIXTURE array. It just seems to be added
803
818
  to the store because when you call store.find to get that record, the adapter looks
804
819
  in that FIXTURE array to find it and then puts it in the store.
@@ -806,26 +821,26 @@ in that FIXTURE array to find it and then puts it in the store.
806
821
  ```javascript
807
822
 
808
823
 
809
- store.makeFixture('user'); // user.FIXTURES = [{id: 1, name: 'User1', style: 'normal'}]
810
- store.makeFixture('user', {name: 'bob'}); // user.FIXTURES = [{id: 2, name: 'bob', style: 'normal'}]
811
- store.makeFixture('admin'); // user.FIXTURES = [{id: 3, name: 'Admin', style: 'super'}]
812
- store.makeFixture('admin', {name: 'Fred'}); // user.FIXTURES = [{id: 4, name: 'Fred', style: 'super'}]
824
+ FactoryGuy.make('user'); // user.FIXTURES = [{id: 1, name: 'User1', style: 'normal'}]
825
+ FactoryGuy.make('user', {name: 'bob'}); // user.FIXTURES = [{id: 2, name: 'bob', style: 'normal'}]
826
+ FactoryGuy.make('admin'); // user.FIXTURES = [{id: 3, name: 'Admin', style: 'super'}]
827
+ FactoryGuy.make('admin', {name: 'Fred'}); // user.FIXTURES = [{id: 4, name: 'Fred', style: 'super'}]
813
828
 
814
829
 
815
830
  // Use store.find to get the model instance ( Remember this is the Fixture adapter, if
816
831
  // you use the ActiveModelAdapter or RESTAdapter the record is returned so you don't
817
832
  // have to then go and find it )
818
- var userJson = store.makeFixture('user');
833
+ var userJson = FactoryGuy.make('user');
819
834
  store.find('user', userJson.id).then(function(user) {
820
- user.toJSON() ( pretty much equals ) userJson;
835
+ user.toJSON({includeId: true}) ( pretty much equals ) userJson;
821
836
  });
822
837
 
823
838
  // and to setup associations ...
824
- var projectJson = store.makeFixture('project');
825
- var userJson = store.makeFixture('user', {projects: [projectJson.id]});
839
+ var projectJson = FactoryGuy.make('project');
840
+ var userJson = FactoryGuy.make('user', {projects: [projectJson.id]});
826
841
  // OR
827
- var userJson = store.makeFixture('user');
828
- var projectJson = store.makeFixture('project', {user: userJson.id});
842
+ var userJson = FactoryGuy.make('user');
843
+ var projectJson = FactoryGuy.make('project', {user: userJson.id});
829
844
 
830
845
  // will give you the same result, but with fixture adapter all associations
831
846
  // are treated as async ( by factory_guy_has_many.js fix ), so it's
@@ -833,7 +848,7 @@ var projectJson = store.makeFixture('project', {user: userJson.id});
833
848
  // in view specs though, this clunk is dealt with for you. But remember,
834
849
  // you DON'T have to use the Fixture adapter.
835
850
  store.find('user', 1).then(function(user) {
836
- user.toJSON() (pretty much equals) userJson;
851
+ user.toJSON({includeId: true}) (pretty much equals) userJson;
837
852
  user.get('projects').then(function(projects) {
838
853
  projects.length == 1;
839
854
  });
data/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-data-factory-guy",
3
- "version": "0.8.7",
3
+ "version": "0.9.0",
4
4
  "authors": [
5
5
  "Daniel Sudol <dansudol@yahoo.com>",
6
6
  "Opak Alex <opak.alexandr@gmail.com>"
@@ -95,9 +95,19 @@ var ModelDefinition = function (model, config) {
95
95
  // function might be a sequence of a named association
96
96
  fixture[attribute] = fixture[attribute].call(this, fixture);
97
97
  } else if (Ember.typeOf(fixture[attribute]) == 'object') {
98
- // if it's an object it's for a model association, so build the json
98
+ // If it's an object and it's a model association attribute, build the json
99
99
  // for the association and replace the attribute with that json
100
- fixture[attribute] = FactoryGuy.build(attribute, fixture[attribute]);
100
+ if (FactoryGuy.getStore()) {
101
+ if (FactoryGuy.isAttributeRelationship(this.model, attribute)) {
102
+ fixture[attribute] = FactoryGuy.build(attribute, fixture[attribute]);
103
+ }
104
+ } else {
105
+ // For legacy reasons, if the store is not set in FactoryGuy, keep
106
+ // this code the way it is ( though it will cause failures when the object is actually
107
+ // a custom attribute and not a relationship ), while users start setting the store
108
+ // in FactoryGuy, or using testHelper.make instead of store.makeFixture
109
+ fixture[attribute] = FactoryGuy.build(attribute, fixture[attribute]);
110
+ }
101
111
  }
102
112
  }
103
113
  // set the id, unless it was already set in opts
@@ -218,6 +228,44 @@ var FactoryGuy = {
218
228
  this.modelDefinitions[model] = new ModelDefinition(model, config);
219
229
  }
220
230
  },
231
+ /**
232
+ Setting the store so FactoryGuy can do some model introspection.
233
+ */
234
+ setStore: function(store) {
235
+ Ember.assert("FactoryGuy#setStore needs a valid store instance.You passed in ["+store+"]",store instanceof DS.Store)
236
+ this.store = store;
237
+ },
238
+ getStore: function() {
239
+ return this.store;
240
+ },
241
+ /**
242
+ Checks a model's attribute to determine if it's a relationship.
243
+
244
+ @param {String} typeName model type name like 'user' for User model class
245
+ @param {String} attribute attribute you want to check
246
+ @returns {Boolean} true if the attribute is a relationship, false if not
247
+ */
248
+ isAttributeRelationship: function(typeName, attribute) {
249
+ if (!this.store) {
250
+ console.log("FactoryGuy does not have the application's store. Use FactoryGuy.setStore(store) before making any fixtures")
251
+ // The legacy value was true.
252
+ return true;
253
+ }
254
+ var model = this.store.modelFor(typeName);
255
+ return !!model.typeForRelationship(attribute);
256
+ },
257
+ /**
258
+ Make new fixture and save to store. Proxy to store#makeFixture method
259
+
260
+ @param {String} name fixture name
261
+ @param {String} trait optional trait names ( one or more )
262
+ @param {Object} opts optional fixture options that will override default fixture values
263
+ @returns {Object|DS.Model} json or record depending on the adapter type
264
+ */
265
+ make: function() {
266
+ Ember.assert("FactoryGuy does not have the application's store. Use FactoryGuy.setStore(store) before making any fixtures", this.store);
267
+ return this.store.makeFixture.apply(this.store,arguments);
268
+ },
221
269
  /**
222
270
  Used in model definitions to declare use of a sequence. For example:
223
271
 
@@ -741,6 +789,7 @@ var FactoryGuyTestMixin = Em.Mixin.create({
741
789
  // Pass in the app root, which typically is App.
742
790
  setup: function (app) {
743
791
  this.set('container', app.__container__);
792
+ FactoryGuy.setStore(this.getStore());
744
793
  return this;
745
794
  },
746
795
  useFixtureAdapter: function (app) {
@@ -768,8 +817,7 @@ var FactoryGuyTestMixin = Em.Mixin.create({
768
817
  return this.getStore().find(type, id);
769
818
  },
770
819
  /**
771
- Proxy to store's makeFixture method
772
-
820
+ Make new fixture and save to store. Proxy to store#makeFixture method
773
821
  */
774
822
  make: function () {
775
823
  var store = this.getStore();
@@ -778,12 +826,6 @@ var FactoryGuyTestMixin = Em.Mixin.create({
778
826
  getStore: function () {
779
827
  return this.get('container').lookup('store:main');
780
828
  },
781
- pushPayload: function (type, hash) {
782
- return this.getStore().pushPayload(type, hash);
783
- },
784
- pushRecord: function (type, hash) {
785
- return this.getStore().push(type, hash);
786
- },
787
829
  /**
788
830
  Using mockjax to stub an http request.
789
831
 
@@ -860,7 +902,10 @@ var FactoryGuyTestMixin = Em.Mixin.create({
860
902
  so you don't need to include them in the returns hash as well.
861
903
 
862
904
  2) If you don't use match options for exact match, there will be no id returned to the model.
863
-
905
+ The reason being, that this method purposely returns an empty hash response with a 'don't match'
906
+ style handleCreate, because if the responseJson returns a non empty data hash ( with even only
907
+ the id), this essentially empty hash of attributes will override ( and nullify ) all the attributes
908
+ that set when you created the record.
864
909
  3) If you match on a belongsTo association, you don't have to include that in the
865
910
  returns hash.
866
911
 
@@ -913,8 +958,25 @@ var FactoryGuyTestMixin = Em.Mixin.create({
913
958
  @param {Boolean} succeed optional flag to indicate if the request
914
959
  should succeed ( default is true )
915
960
  */
916
- handleUpdate: function (type, id, succeed) {
917
- succeed = succeed === undefined ? true : succeed;
961
+ handleUpdate: function () {
962
+ var args = Array.prototype.slice.call(arguments)
963
+ Ember.assert("To handleUpdate pass in a model instance or a type and an id", args.length>0)
964
+ var succeed = true;
965
+ if (typeof args[args.length-1] == 'boolean') {
966
+ args.pop()
967
+ succeed = false;
968
+ }
969
+ Ember.assert("To handleUpdate pass in a model instance or a type and an id",args.length>0)
970
+ var type, id;
971
+ if (args[0] instanceof DS.Model) {
972
+ var model = args[0];
973
+ type = model.constructor.typeKey;
974
+ id = model.id;
975
+ } else if (typeof args[0] == "string" && typeof parseInt(args[1]) == "number") {
976
+ type = args[0];
977
+ id = args[1];
978
+ }
979
+ Ember.assert("To handleUpdate pass in a model instance or a type and an id",type && id)
918
980
  this.stubEndpointForHttpRequest(this.buildURL(type, id), {}, {
919
981
  type: 'PUT',
920
982
  status: succeed ? 200 : 500