ember-data-factory-guy 0.7.3 → 0.7.5

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.
@@ -123,10 +123,10 @@ test("#build with traits", function() {
123
123
  deepEqual(json, {id: 2, title: 'Project1', user: {id: 1, name: 'User1'}}, 'trait with belongsTo attributes');
124
124
 
125
125
  var json = FactoryGuy.build('project', 'big', 'with_user');
126
- deepEqual(json, {id: 3, title: 'Big Project', user: {id: 2, name: 'User1'}}, 'more than one trait used together');
126
+ deepEqual(json, {id: 3, title: 'Big Project', user: {id: 2, name: 'User2'}}, 'more than one trait used together');
127
127
 
128
128
  var json = FactoryGuy.build('project', 'big', 'with_user', {title: 'Crazy Project'});
129
- deepEqual(json, {id: 4, title: 'Crazy Project', user: {id: 3, name: 'User1'}}, 'more than one trait used together with custom attributes');
129
+ deepEqual(json, {id: 4, title: 'Crazy Project', user: {id: 3, name: 'User3'}}, 'more than one trait used together with custom attributes');
130
130
 
131
131
  var json = FactoryGuy.build('project', 'big', 'with_dude');
132
132
  deepEqual(json, {id: 5, title: 'Big Project', user: {id: 4, name: 'Dude'}}, 'trait with custom belongsTo association object');
@@ -140,7 +140,7 @@ test("#build with traits", function() {
140
140
  var json = FactoryGuy.build('user', 'with_projects');
141
141
  deepEqual(json, {
142
142
  id: 6,
143
- name: 'User1',
143
+ name: 'User4',
144
144
  projects: [{id: 8, title: 'Project4'},{id: 9, title: 'Project5'}]
145
145
  }, 'trait with hasMany association');
146
146
  });
@@ -183,7 +183,7 @@ test("#build similar model type ids are created sequentially", function() {
183
183
  test("#buildList creates list of fixtures", function() {
184
184
  var userList = FactoryGuy.buildList('user', 2);
185
185
  deepEqual(userList[0], {id: 1, name: 'User1'});
186
- deepEqual(userList[1], {id: 2, name: 'User1'});
186
+ deepEqual(userList[1], {id: 2, name: 'User2'});
187
187
 
188
188
  var userList = FactoryGuy.buildList('user', 1, {name: 'Crazy'});
189
189
  deepEqual(userList[0], {id: 3, name: 'Crazy'},'using custom attributes');
@@ -1,8 +1,6 @@
1
1
  var testHelper, store;
2
2
 
3
- module('FactoryGuyTestMixin with DS.RESTAdapter', {
4
- });
5
-
3
+ module('FactoryGuyTestMixin with DS.RESTAdapter', {});
6
4
 
7
5
  test("#buildURL without namespace", function () {
8
6
  RestAdapter = DS.RESTAdapter.extend({
@@ -24,22 +22,219 @@ test("#buildURL with namespace and host", function () {
24
22
  equal(testHelper.buildURL('project'), 'https://dude.com/api/v1/projects');
25
23
  })
26
24
 
27
- //asyncTest("#handleFind handles associations", function() {
28
- // var projectJSON = FactoryGuy.build('project');
29
- // var userJSON = FactoryGuy.build('user', {projects: [projectJSON.id]});
30
- // projectJSON.user = userJSON.id
31
- //
32
- // testHelper.handleSideloadFind('user', userJSON, {projects: [projectJSON]})
33
- //
34
- // store.find('user', userJSON.id).then(function(user) {
35
- // console.log(user.toJSON())
36
- // console.log(userJSON)
37
- //// console.log(user+'',user.get('projects.firstObject').toJSON())
38
- //// console.log(user.get('projects.firstObject.user')+'')
39
- //// ok(user.toJSON() == userJSON)
40
- // ok(user instanceof User)
41
- // ok(user.get('projects.firstObject.user') == user)
42
- //// deepEqual(user.get('projects.firstObject').toJSON(), project)
43
- // start();
44
- // });
45
- //});
25
+
26
+
27
+ module('FactoryGuyTestMixin (using mockjax) with DS.RESTAdapter', {
28
+ setup: function () {
29
+ testHelper = TestHelper.setup(DS.RESTAdapter);
30
+ store = testHelper.getStore();
31
+ },
32
+ teardown: function () {
33
+ testHelper.teardown();
34
+ $.mockjaxClear();
35
+ }
36
+ });
37
+
38
+ /////// handleCreate //////////
39
+
40
+ asyncTest("#handleCreate the basic", function() {
41
+ testHelper.handleCreate('profile')
42
+
43
+ store.createRecord('profile').save().then(function(profile) {
44
+ ok(profile instanceof Profile)
45
+ ok(profile.get('description') == 'Text goes here')
46
+ start();
47
+ });
48
+ });
49
+
50
+
51
+
52
+ /////// handleFindMany //////////
53
+
54
+ asyncTest("#handleFindMany the basic", function () {
55
+ testHelper.handleFindMany('profile', 2);
56
+
57
+ store.find('profile').then(function (profiles) {
58
+ ok(profiles.get('length') == 2);
59
+ start();
60
+ });
61
+ });
62
+
63
+ asyncTest("#handleFindMany with fixture options", function () {
64
+ testHelper.handleFindMany('profile', 2, {description: 'dude'});
65
+
66
+ store.find('profile').then(function (profiles) {
67
+ ok(profiles.get('length') == 2);
68
+ ok(profiles.get('firstObject.description') == 'dude');
69
+ start();
70
+ });
71
+ });
72
+
73
+ asyncTest("#handleFindMany with traits", function () {
74
+ testHelper.handleFindMany('profile', 2, 'goofy_description');
75
+
76
+ store.find('profile').then(function (profiles) {
77
+ ok(profiles.get('length') == 2);
78
+ ok(profiles.get('firstObject.description') == 'goofy');
79
+ start();
80
+ });
81
+ });
82
+
83
+ asyncTest("#handleFindMany with traits and extra options", function () {
84
+ testHelper.handleFindMany('profile', 2, 'goofy_description', {description: 'dude'});
85
+
86
+ store.find('profile').then(function (profiles) {
87
+ ok(profiles.get('length') == 2);
88
+ ok(profiles.get('firstObject.description') == 'dude');
89
+ start();
90
+ });
91
+ });
92
+
93
+
94
+
95
+
96
+ module('FactoryGuyTestMixin (using mockjax) with DS.ActiveModelAdapter', {
97
+ setup: function () {
98
+ testHelper = TestHelper.setup(DS.ActiveModelAdapter);
99
+ store = testHelper.getStore();
100
+ },
101
+ teardown: function () {
102
+ testHelper.teardown();
103
+ $.mockjaxClear();
104
+ }
105
+ });
106
+
107
+
108
+ /////// handleCreate //////////
109
+
110
+ asyncTest("#handleCreate the basic", function() {
111
+ testHelper.handleCreate('profile')
112
+
113
+ store.createRecord('profile').save().then(function(profile) {
114
+ ok(profile instanceof Profile)
115
+ ok(profile.get('description') == 'Text goes here')
116
+ start();
117
+ });
118
+ });
119
+
120
+ asyncTest("#handleCreate with model that has camelCase attribute", function() {
121
+ testHelper.handleCreate('profile', {camelCaseDescription: 'description'})
122
+
123
+ store.createRecord('profile').save().then(function(profile) {
124
+ ok(profile.get('camelCaseDescription') == 'description')
125
+ start();
126
+ });
127
+ });
128
+
129
+ asyncTest("#handleCreate failure", function() {
130
+ testHelper.handleCreate('profile', false)
131
+
132
+ store.createRecord('profile').save()
133
+ .then(
134
+ function() {},
135
+ function() {
136
+ ok(true)
137
+ start();
138
+ }
139
+ )
140
+ });
141
+
142
+
143
+
144
+ /////// handleFindMany //////////
145
+
146
+
147
+ asyncTest("#handleFindMany the basic", function () {
148
+ testHelper.handleFindMany('profile', 2);
149
+
150
+ store.find('profile').then(function (profiles) {
151
+ ok(profiles.get('length') == 2);
152
+ ok(profiles.get('firstObject.description') == 'Text goes here');
153
+ start();
154
+ });
155
+ });
156
+
157
+ asyncTest("#handleFindMany with fixture options", function () {
158
+ testHelper.handleFindMany('profile', 2, {description: 'dude'});
159
+
160
+ store.find('profile').then(function (profiles) {
161
+ ok(profiles.get('length') == 2);
162
+ ok(profiles.get('firstObject.description') == 'dude');
163
+ start();
164
+ });
165
+ });
166
+
167
+ asyncTest("#handleFindMany with traits", function () {
168
+ testHelper.handleFindMany('profile', 2, 'goofy_description');
169
+
170
+ store.find('profile').then(function (profiles) {
171
+ ok(profiles.get('length') == 2);
172
+ ok(profiles.get('firstObject.description') == 'goofy');
173
+ start();
174
+ });
175
+ });
176
+
177
+ asyncTest("#handleFindMany with traits and fixture options", function () {
178
+ testHelper.handleFindMany('profile', 2, 'goofy_description', {description: 'dude'});
179
+
180
+ store.find('profile').then(function (profiles) {
181
+ ok(profiles.get('length') == 2);
182
+ ok(profiles.get('firstObject.description') == 'dude');
183
+ start();
184
+ });
185
+ });
186
+
187
+
188
+
189
+ /////// handleUpdate //////////
190
+
191
+ asyncTest("#handleUpdate the basic", function() {
192
+ var profile = store.makeFixture('profile');
193
+ testHelper.handleUpdate('profile', profile.id);
194
+
195
+ profile.set('description','new desc');
196
+ profile.save().then(function(profile) {
197
+ ok(profile.get('description') == 'new desc');
198
+ start();
199
+ });
200
+ });
201
+
202
+ asyncTest("#handleUpdate failure", function() {
203
+ var profile = store.makeFixture('profile');
204
+ testHelper.handleUpdate('profile', profile.id, false);
205
+
206
+ profile.set('description','new desc');
207
+ profile.save().then(
208
+ function() {},
209
+ function() {
210
+ ok(true)
211
+ start();
212
+ }
213
+ )
214
+ });
215
+
216
+
217
+ /////// handleDelete //////////
218
+
219
+ asyncTest("#handleDelete the basic", function() {
220
+ var profile = store.makeFixture('profile');
221
+ testHelper.handleDelete('profile', profile.id);
222
+
223
+ profile.destroyRecord().then(function() {
224
+ equal(store.all('profile').get('content.length'), 0);
225
+ start();
226
+ });
227
+ });
228
+
229
+ asyncTest("#handleDelete failure case", function() {
230
+ var profile = store.makeFixture('profile');
231
+ testHelper.handleDelete('profile', profile.id, false);
232
+
233
+ profile.destroyRecord().then(
234
+ function() {},
235
+ function() {
236
+ ok(true);
237
+ start();
238
+ }
239
+ );
240
+ });
data/tests/index.html CHANGED
@@ -26,11 +26,11 @@
26
26
  </head>
27
27
  <body>
28
28
  <div id="qunit"></div> <!-- QUnit fills this with results, etc -->
29
- <script src='active_model_adapter_factory_test.js'></script>
30
- <script src='rest_adapter_factory_test.js'></script>
29
+ <!--<script src='active_model_adapter_factory_test.js'></script>-->
30
+ <!--<script src='rest_adapter_factory_test.js'></script>-->
31
31
  <!--<script src='fixture_adapter_factory_test.js'></script>-->
32
- <script src='store_test.js'></script>
33
- <script src='factory_guy_test.js'></script>
32
+ <!--<script src='store_test.js'></script>-->
33
+ <!--<script src='factory_guy_test.js'></script>-->
34
34
  <script src='factory_guy_test_mixin_test.js'></script>
35
35
  <div id='qunit-fixture'>
36
36
 
@@ -44,21 +44,32 @@ module('DS.Store#makeFixture with RestAdapter', {
44
44
  });
45
45
 
46
46
 
47
- test("creates DS.Model instances", function() {
48
- var user = store.makeFixture('user');
49
- equal(user instanceof DS.Model, true);
50
- });
51
-
52
-
53
47
  asyncTest("creates records in the store", function() {
54
48
  var user = store.makeFixture('user');
49
+ ok(user instanceof User);
55
50
 
56
- store.find('user', user.id).then( function(store_user) {
51
+ store.find('user', user.id).then(function(store_user) {
57
52
  ok(store_user == user);
58
53
  start()
59
54
  });
60
55
  });
61
56
 
57
+ test("makeFixture with fixture options", function() {
58
+ var profile = store.makeFixture('profile', {description: 'dude'});
59
+ ok(profile.get('description') == 'dude');
60
+ });
61
+
62
+ test("makeFixture with traits", function() {
63
+ var profile = store.makeFixture('profile', 'goofy_description');
64
+ ok(profile.get('description') == 'goofy');
65
+ });
66
+
67
+ test("makeFixture with traits and fixture options ", function() {
68
+ var profile = store.makeFixture('profile', 'goofy_description', {description: 'dude'});
69
+ ok(profile.get('description') == 'dude');
70
+ });
71
+
72
+
62
73
 
63
74
  test("when hasMany associations assigned, belongTo parent is assigned", function() {
64
75
  var project = store.makeFixture('project');
@@ -214,15 +225,6 @@ test("belongsTo associations defined as attributes in fixture", function() {
214
225
  });
215
226
 
216
227
 
217
- test("belongsTo with embedded hasMany associations", function() {
218
- var project = store.makeFixture('project', 'with_user_having_hats');
219
- var user = project.get('user');
220
- var hats = user.get('hats');
221
-
222
- ok(user.get('projects.firstObject') == project)
223
- ok(hats.get('firstObject.user') == user)
224
- });
225
-
226
228
 
227
229
  test("hasMany associations defined as attributes in fixture", function() {
228
230
  var user = store.makeFixture('user_with_projects');
@@ -240,6 +242,25 @@ test("hasMany associations defined with traits", function() {
240
242
  })
241
243
 
242
244
 
245
+ test("with (nested json fixture) belongsTo has a hasMany association which has a belongsTo", function() {
246
+ var project = store.makeFixture('project', 'with_user_having_hats_belonging_to_outfit');
247
+ var user = project.get('user');
248
+ var hats = user.get('hats');
249
+ var firstHat = hats.get('firstObject');
250
+ var lastHat = hats.get('lastObject');
251
+
252
+ ok(user.get('projects.firstObject') == project)
253
+ ok(firstHat.get('user') == user)
254
+ ok(firstHat.get('outfit.id') == 1)
255
+ ok(firstHat.get('outfit.hats.length') == 1)
256
+ ok(firstHat.get('outfit.hats.firstObject') == firstHat)
257
+
258
+ ok(lastHat.get('user') == user)
259
+ ok(lastHat.get('outfit.id') == 2)
260
+ ok(lastHat.get('outfit.hats.length') == 1)
261
+ ok(lastHat.get('outfit.hats.firstObject') == lastHat)
262
+ });
263
+
243
264
 
244
265
  module('DS.Store#makeList with DS.RESTAdapter', {
245
266
  setup: function() {
@@ -265,26 +286,4 @@ test("creates records in the store", function() {
265
286
  var storeUsers = store.all('user').get('content');
266
287
  ok(storeUsers[0] == users[0]);
267
288
  ok(storeUsers[1] == users[1]);
268
- });
269
-
270
- //test("creates records in the store", function() {
271
- // var lesson = store.makeFixture('lesson');
272
- // var unit = store.makeFixture('unit');
273
- // var unit = store.makeFixture('unit', {lesson: lesson});
274
- // console.log('@@###',unit+'', unit.get('lesson')+'')
275
-
276
- // var unit = FactoryGuy.build('unit_with_lesson')
277
- // store.push('unit' , unit)
278
- // console.log(store.modelFor('lesson')+'')
279
- // var relationshipsByName = Ember.get(Lesson, 'relationshipsByName');
280
- // console.log(relationshipsByName)
281
-
282
- // var unit = store.makeFixture('unit_with_lesson');
283
- // console.log('@@###',unit+'', unit.get('lesson')+'')
284
-
285
- // console.log(FactoryGuy.build('unit_with_lesson'));
286
- // unit.get('lesson').then(function(lesson) {
287
- // ok(lesson instanceof Lesson == true)
288
- // })
289
-
290
- //})
289
+ });
@@ -5,5 +5,13 @@ FactoryGuy.define('hat', {
5
5
  },
6
6
  big_hat: {
7
7
  type: 'BigHat'
8
+ },
9
+ traits: {
10
+ belonging_to_user: {
11
+ user: FactoryGuy.belongsTo('user')
12
+ },
13
+ belonging_to_outfit: {
14
+ outfit: FactoryGuy.belongsTo('outfit')
15
+ }
8
16
  }
9
17
  })
@@ -0,0 +1,8 @@
1
+ FactoryGuy.define("outfit", {
2
+ sequences: {
3
+ name: function(num) {return 'Outfit' + num}
4
+ },
5
+ default: {
6
+ name: FactoryGuy.generate('name')
7
+ }
8
+ });
@@ -1,5 +1,10 @@
1
1
  FactoryGuy.define('profile', {
2
2
  default: {
3
3
  description: 'Text goes here'
4
+ },
5
+ traits: {
6
+ goofy_description: {
7
+ description: 'goofy'
8
+ }
4
9
  }
5
10
  })
@@ -7,6 +7,8 @@ FactoryGuy.define("project", {
7
7
  with_title_sequence: { title: FactoryGuy.generate('title') },
8
8
  with_user: { user: {} },
9
9
  with_user_having_hats: { user: FactoryGuy.belongsTo('user', 'with_hats') },
10
+ with_user_having_hats_belonging_to_user: { user: FactoryGuy.belongsTo('user', 'with_hats_belonging_to_user') },
11
+ with_user_having_hats_belonging_to_outfit: { user: FactoryGuy.belongsTo('user', 'with_hats_belonging_to_outfit') },
10
12
  with_dude: { user: {name: 'Dude'} },
11
13
  with_admin: { user: FactoryGuy.belongsTo('admin') }
12
14
  },