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.
- checksums.yaml +4 -4
- data/README.md +12 -9
- data/bower.json +1 -1
- data/dist/ember-data-factory-guy.js +65 -12
- data/dist/ember-data-factory-guy.min.js +1 -1
- data/dist/factory_guy_has_many.js +7 -7
- data/ember-data-factory-guy.gemspec +1 -1
- data/package.json +1 -1
- data/src/has_many.js +7 -7
- data/src/store.js +65 -12
- data/tests/active_model_adapter_factory_test.js +52 -37
- data/tests/factory_guy_test_mixin_test.js +9 -15
- data/tests/fixture_adapter_factory_test.js +11 -8
- data/tests/index.html +4 -3
- data/tests/rest_adapter_factory_test.js +63 -47
- data/tests/store_test.js +8 -11
- data/tests/support/factories/group_factory.js +29 -0
- data/tests/support/factories/material_factory.js +9 -0
- data/tests/support/factories/project_factory.js +11 -0
- data/tests/support/models/group.js +12 -0
- data/tests/support/models/hat.js +2 -1
- data/tests/support/models/material.js +5 -0
- data/tests/support/models/project.js +5 -0
- data/tests/support/test_helper.js +253 -23
- data/tests/test_setup.js +74 -1
- data/vendor/assets/javascripts/ember_data_factory_guy.js +65 -13
- data/vendor/assets/javascripts/factory_guy_has_many.js +7 -7
- metadata +8 -6
@@ -1,31 +1,25 @@
|
|
1
1
|
var testHelper, store;
|
2
2
|
|
3
3
|
module('FactoryGuyTestMixin with DS.RESTAdapter', {
|
4
|
-
setup: function () {
|
5
|
-
testHelper = TestHelper.setup(DS.RESTAdapter);
|
6
|
-
store = testHelper.getStore();
|
7
|
-
},
|
8
|
-
teardown: function () {
|
9
|
-
DS.RESTAdapter.reopen({
|
10
|
-
namespace: '',
|
11
|
-
host: ''
|
12
|
-
})
|
13
|
-
Em.run(function () {
|
14
|
-
testHelper.teardown();
|
15
|
-
});
|
16
|
-
}
|
17
4
|
});
|
18
5
|
|
19
6
|
|
20
7
|
test("#buildURL without namespace", function () {
|
8
|
+
RestAdapter = DS.RESTAdapter.extend({
|
9
|
+
host: '',
|
10
|
+
namespace: ''
|
11
|
+
});
|
12
|
+
testHelper = TestHelper.setup(RestAdapter);
|
13
|
+
|
21
14
|
equal(testHelper.buildURL('project'), '/projects', 'has no namespace by default');
|
22
15
|
})
|
23
16
|
|
24
17
|
test("#buildURL with namespace and host", function () {
|
25
|
-
DS.RESTAdapter.
|
18
|
+
RestAdapter = DS.RESTAdapter.extend({
|
26
19
|
host: 'https://dude.com',
|
27
20
|
namespace: 'api/v1'
|
28
|
-
})
|
21
|
+
});
|
22
|
+
testHelper = TestHelper.setup(RestAdapter);
|
29
23
|
|
30
24
|
equal(testHelper.buildURL('project'), 'https://dude.com/api/v1/projects');
|
31
25
|
})
|
@@ -88,8 +88,10 @@ asyncTest("#makeFixture sets belongsTo on hasMany associations", function () {
|
|
88
88
|
var user = store.makeFixture('user', {projects: [p1]})
|
89
89
|
|
90
90
|
store.find('user', 1).then(function (user) {
|
91
|
-
var projects = user.get('projects');
|
92
|
-
|
91
|
+
// var projects = user.get('projects');
|
92
|
+
console.log(user+'', user.toJSON())
|
93
|
+
// console.log(user+'', projects)
|
94
|
+
// equal(projects.length, 1, "adds hasMany records");
|
93
95
|
start();
|
94
96
|
})
|
95
97
|
})
|
@@ -101,8 +103,8 @@ asyncTest("#makeFixture adds record to hasMany association array for which it be
|
|
101
103
|
|
102
104
|
store.find('user', userJson.id).then(function (user) {
|
103
105
|
var projects = user.get('projects');
|
104
|
-
equal(projects.
|
105
|
-
equal(projects.
|
106
|
+
equal(projects.length, 1, "adds hasMany records");
|
107
|
+
equal(projects.get('firstObject.user'), user, "sets belongsTo record");
|
106
108
|
start();
|
107
109
|
})
|
108
110
|
})
|
@@ -112,9 +114,10 @@ asyncTest("#makeFixture handles default belongsTo associations in fixture", func
|
|
112
114
|
equal(User.FIXTURES.length, 1);
|
113
115
|
|
114
116
|
store.find('user', 1).then(function (user) {
|
117
|
+
|
115
118
|
var projects = user.get('projects');
|
116
|
-
equal(projects.
|
117
|
-
equal(projects.
|
119
|
+
equal(projects.length, 1, "adds hasMany records");
|
120
|
+
equal(projects.get('firstObject.user.id'), 1, "sets belongsTo record");
|
118
121
|
start();
|
119
122
|
})
|
120
123
|
// TODO.. have to make belongsTo async for fixture adapter
|
@@ -143,7 +146,7 @@ asyncTest("#createRecord adds belongsTo association to records it hasMany of", f
|
|
143
146
|
}).then(function (promises) {
|
144
147
|
var projectUser = promises[0], projects = promises[1];
|
145
148
|
equal(projectUser, user);
|
146
|
-
equal(projects.
|
149
|
+
equal(projects.length, 1);
|
147
150
|
start();
|
148
151
|
});
|
149
152
|
})
|
@@ -175,7 +178,7 @@ asyncTest("#createRecord adds hasMany association to records it hasMany of ", fu
|
|
175
178
|
|
176
179
|
var property = store.createRecord('property', propertyJson);
|
177
180
|
var owners = property.get('owners')
|
178
|
-
owners.
|
181
|
+
owners.addObjects(users);
|
179
182
|
equal(users.get('length'), usersJson.length);
|
180
183
|
start();
|
181
184
|
})
|
data/tests/index.html
CHANGED
@@ -12,22 +12,23 @@
|
|
12
12
|
<script src='../bower_components/handlebars/handlebars.js'></script>
|
13
13
|
<script src='../bower_components/ember/ember.js'></script>
|
14
14
|
<script src='../bower_components/ember-data/ember-data.js'></script>
|
15
|
+
<script src="../bower_components/qunit/qunit/qunit.js"></script>
|
15
16
|
|
16
17
|
<script src='../dist/ember-data-factory-guy.js'></script>
|
17
|
-
|
18
|
+
<!--<script src='../src/has_many.js'></script>-->
|
18
19
|
|
19
20
|
<!-- your tests, any and all to run with the given fixtures below -->
|
20
21
|
<script src='../tests/test_setup.js'></script>
|
21
22
|
<script src='../tests/support/test_helper.js'></script>
|
22
23
|
|
23
|
-
|
24
|
+
|
24
25
|
|
25
26
|
</head>
|
26
27
|
<body>
|
27
28
|
<div id="qunit"></div> <!-- QUnit fills this with results, etc -->
|
28
29
|
<script src='active_model_adapter_factory_test.js'></script>
|
29
|
-
<script src='fixture_adapter_factory_test.js'></script>
|
30
30
|
<script src='rest_adapter_factory_test.js'></script>
|
31
|
+
<!--<script src='fixture_adapter_factory_test.js'></script>-->
|
31
32
|
<script src='store_test.js'></script>
|
32
33
|
<script src='factory_guy_test.js'></script>
|
33
34
|
<script src='factory_guy_test_mixin_test.js'></script>
|
@@ -22,8 +22,8 @@ test("#resetModels clears the store of models, and resets the model definition",
|
|
22
22
|
|
23
23
|
FactoryGuy.resetModels(store);
|
24
24
|
|
25
|
-
equal(store.all('user').get('content.length'), 0)
|
26
|
-
equal(store.all('project').get('content.length'), 0)
|
25
|
+
// equal(store.all('user').get('content.length'), 0)
|
26
|
+
// equal(store.all('project').get('content.length'), 0)
|
27
27
|
|
28
28
|
for (model in FactoryGuy.modelDefinitions) {
|
29
29
|
var definition = FactoryGuy.modelDefinitions[model];
|
@@ -54,7 +54,7 @@ asyncTest("creates records in the store", function() {
|
|
54
54
|
var user = store.makeFixture('user');
|
55
55
|
|
56
56
|
store.find('user', user.id).then( function(store_user) {
|
57
|
-
|
57
|
+
ok(store_user == user);
|
58
58
|
start()
|
59
59
|
});
|
60
60
|
});
|
@@ -64,32 +64,39 @@ test("when hasMany associations assigned, belongTo parent is assigned", function
|
|
64
64
|
var project = store.makeFixture('project');
|
65
65
|
var user = store.makeFixture('user', {projects: [project]})
|
66
66
|
|
67
|
-
|
67
|
+
ok(project.get('user') == user);
|
68
68
|
});
|
69
69
|
|
70
70
|
|
71
|
-
asyncTest("when asnyc
|
71
|
+
asyncTest("when hasMany ( asnyc ) associations assigned, belongTo parent is assigned", function() {
|
72
72
|
var user = store.makeFixture('user');
|
73
73
|
var company = store.makeFixture('company', {users: [user]});
|
74
74
|
|
75
75
|
user.get('company').then(function(c){
|
76
|
-
|
76
|
+
ok(c == company);
|
77
77
|
start();
|
78
78
|
})
|
79
79
|
});
|
80
80
|
|
81
81
|
|
82
|
-
test("when polymorphic
|
82
|
+
test("when hasMany ( polymorphic ) associations are assigned, belongTo parent is assigned", function() {
|
83
83
|
var bh = store.makeFixture('big_hat');
|
84
84
|
var sh = store.makeFixture('small_hat');
|
85
85
|
var user = store.makeFixture('user', {hats: [bh, sh]});
|
86
86
|
|
87
|
-
equal(user.get('hats.
|
88
|
-
ok(user.get('hats.
|
89
|
-
ok(user.get('hats.
|
87
|
+
equal(user.get('hats.length'), 2);
|
88
|
+
ok(user.get('hats.firstObject') instanceof BigHat)
|
89
|
+
ok(user.get('hats.lastObject') instanceof SmallHat)
|
90
90
|
// sets the belongTo user association
|
91
|
-
|
92
|
-
|
91
|
+
ok(bh.get('user') == user)
|
92
|
+
ok(sh.get('user') == user)
|
93
|
+
});
|
94
|
+
|
95
|
+
|
96
|
+
test("when hasMany ( self referential ) associations are assigned, belongsTo parent is assigned", function() {
|
97
|
+
var big_group = store.makeFixture('big_group');
|
98
|
+
var group = store.makeFixture('group', {versions: [big_group]});
|
99
|
+
ok(big_group.get('group') == group)
|
93
100
|
});
|
94
101
|
|
95
102
|
|
@@ -97,7 +104,7 @@ test("when hasMany associations are assigned, belongsTo parent is assigned using
|
|
97
104
|
var project = store.makeFixture('project');
|
98
105
|
var project2 = store.makeFixture('project', {children: [project]});
|
99
106
|
|
100
|
-
|
107
|
+
ok(project.get('parent') == project2);
|
101
108
|
});
|
102
109
|
|
103
110
|
|
@@ -105,7 +112,15 @@ test("when hasMany associations are assigned, belongsTo parent is assigned using
|
|
105
112
|
var silk = store.makeFixture('silk');
|
106
113
|
var bh = store.makeFixture('big_hat', {materials: [silk]});
|
107
114
|
|
108
|
-
|
115
|
+
ok(silk.get('hat') == bh)
|
116
|
+
});
|
117
|
+
|
118
|
+
|
119
|
+
test("when hasMany associations are assigned, belongsTo ( polymorphic ) parent is assigned", function() {
|
120
|
+
var fluff = store.makeFixture('fluffy_material');
|
121
|
+
var big_hat = store.makeFixture('big_hat', {fluffy_materials: [fluff]});
|
122
|
+
|
123
|
+
ok(fluff.get('hat') == big_hat)
|
109
124
|
});
|
110
125
|
|
111
126
|
|
@@ -114,9 +129,9 @@ test("when belongTo parent is assigned, parent adds to hasMany records", functio
|
|
114
129
|
var project1 = store.makeFixture('project', {user: user});
|
115
130
|
var project2 = store.makeFixture('project', {user: user});
|
116
131
|
|
117
|
-
equal(user.get('projects.
|
118
|
-
|
119
|
-
|
132
|
+
equal(user.get('projects.length'), 2);
|
133
|
+
ok(user.get('projects.firstObject') == project1);
|
134
|
+
ok(user.get('projects.lastObject') == project2);
|
120
135
|
});
|
121
136
|
|
122
137
|
|
@@ -125,32 +140,32 @@ test("when belongTo parent is assigned, parent adds to polymorphic hasMany recor
|
|
125
140
|
store.makeFixture('big_hat', {user: user});
|
126
141
|
store.makeFixture('small_hat', {user: user});
|
127
142
|
|
128
|
-
equal(user.get('hats.
|
129
|
-
ok(user.get('hats.
|
130
|
-
ok(user.get('hats.
|
143
|
+
equal(user.get('hats.length'), 2);
|
144
|
+
ok(user.get('hats.firstObject') instanceof BigHat)
|
145
|
+
ok(user.get('hats.lastObject') instanceof SmallHat)
|
131
146
|
});
|
132
147
|
|
133
148
|
|
134
|
-
asyncTest("when async
|
149
|
+
asyncTest("when hasMany ( async ) relationship is assigned, model relationship is synced on both sides", function() {
|
135
150
|
var property = store.makeFixture('property');
|
136
151
|
var user1 = store.makeFixture('user', {properties: [property]});
|
137
152
|
var user2 = store.makeFixture('user', {properties: [property]});
|
138
153
|
|
139
|
-
equal(property.get('owners.
|
140
|
-
|
141
|
-
|
154
|
+
equal(property.get('owners.length'), 2);
|
155
|
+
ok(property.get('owners.firstObject') == user1);
|
156
|
+
ok(property.get('owners.lastObject') == user2);
|
142
157
|
start();
|
143
158
|
});
|
144
159
|
|
145
160
|
|
146
|
-
asyncTest("when async
|
161
|
+
asyncTest("when belongsTo ( async ) parent is assigned, parent adds to hasMany records", function() {
|
147
162
|
var user1 = store.makeFixture('user');
|
148
163
|
var user2 = store.makeFixture('user');
|
149
164
|
var company = store.makeFixture('company', {users: [user1, user2]});
|
150
165
|
|
151
|
-
equal(company.get('users.
|
152
|
-
|
153
|
-
|
166
|
+
equal(company.get('users.length'), 2);
|
167
|
+
ok(company.get('users.firstObject') == user1);
|
168
|
+
ok(company.get('users.lastObject') == user2);
|
154
169
|
start();
|
155
170
|
});
|
156
171
|
|
@@ -159,8 +174,8 @@ test("when belongTo parent is assigned, parent adds to hasMany record using inve
|
|
159
174
|
var project = store.makeFixture('project');
|
160
175
|
var project2 = store.makeFixture('project', {parent: project});
|
161
176
|
|
162
|
-
equal(project.get('children.
|
163
|
-
|
177
|
+
equal(project.get('children.length'), 1);
|
178
|
+
ok(project.get('children.firstObject') == project2);
|
164
179
|
});
|
165
180
|
|
166
181
|
|
@@ -168,49 +183,50 @@ test("when belongTo parent is assigned, parent adds to hasMany record using actu
|
|
168
183
|
var bh = store.makeFixture('big_hat');
|
169
184
|
var silk = store.makeFixture('silk', {hat: bh});
|
170
185
|
|
171
|
-
|
186
|
+
ok(bh.get('materials.firstObject') == silk)
|
172
187
|
});
|
173
188
|
|
174
189
|
|
175
190
|
test("when belongTo parent is assigned, parent adds to belongsTo record", function() {
|
176
191
|
var company = store.makeFixture('company');
|
177
192
|
var profile = store.makeFixture('profile', {company: company});
|
178
|
-
|
193
|
+
ok(company.get('profile') == profile);
|
179
194
|
|
180
195
|
// but guard against a situation where a model can belong to itself
|
181
196
|
// and do not want to set the belongsTo on this case.
|
182
197
|
var hat1 = store.makeFixture('big_hat')
|
183
198
|
var hat2 = store.makeFixture('big_hat', {hat: hat1})
|
184
|
-
|
185
|
-
|
199
|
+
ok(hat1.get('hat') == null);
|
200
|
+
ok(hat2.get('hat') == hat1);
|
186
201
|
});
|
187
202
|
|
188
203
|
|
189
204
|
test("belongsTo associations defined as attributes in fixture", function() {
|
190
205
|
var project = store.makeFixture('project_with_user');
|
191
206
|
equal(project.get('user') instanceof User, true)
|
192
|
-
|
207
|
+
ok(project.get('user.name') == 'User1');
|
193
208
|
|
194
209
|
var project = store.makeFixture('project_with_dude');
|
195
|
-
|
210
|
+
ok(project.get('user.name') == 'Dude');
|
196
211
|
|
197
212
|
var project = store.makeFixture('project_with_admin');
|
198
|
-
|
213
|
+
ok(project.get('user.name') == 'Admin');
|
199
214
|
});
|
200
215
|
|
201
216
|
|
202
217
|
test("hasMany associations defined as attributes in fixture", function() {
|
203
218
|
var user = store.makeFixture('user_with_projects');
|
204
|
-
equal(user.get('projects.
|
205
|
-
|
206
|
-
|
219
|
+
equal(user.get('projects.length'), 2)
|
220
|
+
ok(user.get('projects.firstObject.user') == user)
|
221
|
+
ok(user.get('projects.lastObject.user') == user)
|
207
222
|
})
|
208
223
|
|
224
|
+
|
209
225
|
test("hasMany associations defined with traits", function() {
|
210
226
|
var user = store.makeFixture('user', 'with_projects');
|
211
|
-
equal(user.get('projects.
|
212
|
-
|
213
|
-
|
227
|
+
equal(user.get('projects.length'), 2)
|
228
|
+
ok(user.get('projects.firstObject.user') == user)
|
229
|
+
ok(user.get('projects.lastObject.user') == user)
|
214
230
|
})
|
215
231
|
|
216
232
|
|
@@ -227,8 +243,8 @@ module('DS.Store#makeList with DS.RESTAdapter', {
|
|
227
243
|
|
228
244
|
test("creates list of DS.Model instances", function() {
|
229
245
|
var users = store.makeList('user', 2);
|
230
|
-
|
231
|
-
|
246
|
+
ok(users.length == 2);
|
247
|
+
ok(users[0] instanceof DS.Model == true);
|
232
248
|
});
|
233
249
|
|
234
250
|
|
@@ -236,6 +252,6 @@ test("creates records in the store", function() {
|
|
236
252
|
var users = store.makeList('user', 2);
|
237
253
|
|
238
254
|
var storeUsers = store.all('user').get('content');
|
239
|
-
|
240
|
-
|
255
|
+
ok(storeUsers[0] == users[0]);
|
256
|
+
ok(storeUsers[1] == users[1]);
|
241
257
|
});
|
data/tests/store_test.js
CHANGED
@@ -7,29 +7,26 @@ module('DS.Store', {
|
|
7
7
|
teardown: function() {}
|
8
8
|
});
|
9
9
|
|
10
|
-
var getStore = function(adapter) {
|
11
|
-
container.register("store:main", DS.Store.extend({adapter: adapter}));
|
12
|
-
return container.lookup("store:main");
|
13
|
-
}
|
14
10
|
|
15
11
|
test("with DS.FixtureAdapter", function() {
|
16
|
-
var
|
17
|
-
equal(
|
12
|
+
var store = createStore({adapter: DS.FixtureAdapter});
|
13
|
+
equal(store.usingFixtureAdapter(), true );
|
18
14
|
});
|
19
15
|
|
20
16
|
test("when extending DS.FixtureAdapter", function() {
|
21
17
|
var adapter = DS.FixtureAdapter.extend({});
|
22
|
-
|
18
|
+
var store = createStore({adapter: adapter});
|
19
|
+
equal(store.usingFixtureAdapter(), true );
|
23
20
|
});
|
24
21
|
|
25
22
|
test("with DS.RESTAdapter", function() {
|
26
|
-
var
|
27
|
-
equal(
|
23
|
+
var store = createStore({adapter: DS.RESTAdapter});
|
24
|
+
equal(store.usingFixtureAdapter(), false );
|
28
25
|
});
|
29
26
|
|
30
27
|
test("with DS.ActiveModelAdapter", function() {
|
31
|
-
var
|
32
|
-
equal(
|
28
|
+
var store = createStore({adapter: DS.ActiveModelAdapter});
|
29
|
+
equal(store.usingFixtureAdapter(), false );
|
33
30
|
});
|
34
31
|
|
35
32
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
FactoryGuy.define("group", {
|
2
|
+
sequences: {
|
3
|
+
name: function(num) {return 'Group' + num}
|
4
|
+
},
|
5
|
+
default: {
|
6
|
+
type: "Group",
|
7
|
+
name: FactoryGuy.generate('name')
|
8
|
+
}
|
9
|
+
});
|
10
|
+
|
11
|
+
FactoryGuy.define("big_group", {
|
12
|
+
sequences: {
|
13
|
+
name: function(num) {return 'Big Group' + num}
|
14
|
+
},
|
15
|
+
default: {
|
16
|
+
type: "BigGroup",
|
17
|
+
name: FactoryGuy.generate('name')
|
18
|
+
}
|
19
|
+
})
|
20
|
+
|
21
|
+
FactoryGuy.define("small_group", {
|
22
|
+
sequences: {
|
23
|
+
name: function(num) {return 'Small Group' + num}
|
24
|
+
},
|
25
|
+
default: {
|
26
|
+
type: "SmallGroup",
|
27
|
+
name: FactoryGuy.generate('name')
|
28
|
+
}
|
29
|
+
})
|