ember-data-factory-guy 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
})
|