ember-data-factory-guy 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -1
- data/Gruntfile.js +8 -0
- data/README.md +253 -91
- data/bower.json +1 -1
- data/dist/ember-data-factory-guy.js +137 -65
- data/dist/ember-data-factory-guy.min.js +1 -1
- data/ember-data-factory-guy.gemspec +1 -1
- data/package.json +1 -1
- data/src/factory_guy.js +38 -24
- data/src/factory_guy_test_mixin.js +2 -2
- data/src/model_definition.js +7 -2
- data/src/store.js +90 -37
- data/tests/active_model_adapter_factory_test.js +26 -3
- data/tests/factory_guy_test.js +28 -2
- data/tests/fixture_adapter_factory_test.js +23 -0
- data/tests/rest_adapter_factory_test.js +27 -4
- data/tests/store_test.js +1 -1
- data/tests/support/factories/hat_factory.js +9 -0
- data/tests/support/factories/project_factory.js +12 -0
- data/tests/support/models/hat.js +8 -0
- data/tests/support/models/user.js +2 -1
- data/tests/support/test_helper.js +3 -0
- data/tests/test_setup.js +32 -1
- data/vendor/assets/javascripts/ember_data_factory_guy.js +137 -65
- metadata +4 -2
@@ -69,7 +69,7 @@ FactoryGuyTestMixin = Em.Mixin.create({
|
|
69
69
|
@param {Object} opts fixture options
|
70
70
|
*/
|
71
71
|
handleCreate: function (name, opts) {
|
72
|
-
var model = FactoryGuy.
|
72
|
+
var model = FactoryGuy.lookupModelForFixtureName(name);
|
73
73
|
this.stubEndpointForHttpRequest(
|
74
74
|
"/" + Em.String.pluralize(model),
|
75
75
|
this.buildAjaxCreateResponse(name, opts),
|
@@ -85,7 +85,7 @@ FactoryGuyTestMixin = Em.Mixin.create({
|
|
85
85
|
¬ */
|
86
86
|
buildAjaxCreateResponse: function (name, opts) {
|
87
87
|
var fixture = FactoryGuy.build(name, opts);
|
88
|
-
var model = FactoryGuy.
|
88
|
+
var model = FactoryGuy.lookupModelForFixtureName(name);
|
89
89
|
var hash = {};
|
90
90
|
hash[model] = fixture;
|
91
91
|
return hash;
|
data/src/model_definition.js
CHANGED
@@ -50,10 +50,15 @@ ModelDefinition = function (model, config) {
|
|
50
50
|
var modelAttributes = namedModels[name] || {};
|
51
51
|
// merge default, modelAttributes and opts to get the rough fixture
|
52
52
|
var fixture = $.extend({}, defaultAttributes, modelAttributes, opts);
|
53
|
-
//
|
53
|
+
// deal with attributes that are functions or objects
|
54
54
|
for (attribute in fixture) {
|
55
|
-
if (
|
55
|
+
if (Ember.typeOf(fixture[attribute]) == 'function') {
|
56
|
+
// function might be a sequence of a named association
|
56
57
|
fixture[attribute] = fixture[attribute].call(this, fixture);
|
58
|
+
} else if (Ember.typeOf(fixture[attribute]) == 'object') {
|
59
|
+
// if it's an object it's for a model association, so build the json
|
60
|
+
// for the association and replace the attribute with that json
|
61
|
+
fixture[attribute] = FactoryGuy.build(attribute, fixture[attribute])
|
57
62
|
}
|
58
63
|
}
|
59
64
|
// set the id, unless it was already set in opts
|
data/src/store.js
CHANGED
@@ -16,19 +16,25 @@ DS.Store.reopen({
|
|
16
16
|
@returns {Object|DS.Model} json or record depending on the adapter type
|
17
17
|
*/
|
18
18
|
makeFixture: function (name, options) {
|
19
|
-
var modelName = FactoryGuy.
|
19
|
+
var modelName = FactoryGuy.lookupModelForFixtureName(name);
|
20
20
|
var fixture = FactoryGuy.build(name, options);
|
21
21
|
var modelType = this.modelFor(modelName);
|
22
22
|
|
23
23
|
if (this.usingFixtureAdapter()) {
|
24
|
-
this.
|
24
|
+
this.setAssociationsForFixtureAdapter(modelType, modelName, fixture);
|
25
25
|
return FactoryGuy.pushFixture(modelType, fixture);
|
26
26
|
} else {
|
27
|
-
var
|
27
|
+
var store = this;
|
28
28
|
var model;
|
29
29
|
Em.run(function () {
|
30
|
-
|
31
|
-
|
30
|
+
store.findEmbeddedBelongsToAssociationsForRESTAdapter(modelType, fixture);
|
31
|
+
if (fixture.type) {
|
32
|
+
// assuming its polymorphic if there is a type attribute
|
33
|
+
// is this too bold an assumption?
|
34
|
+
modelName = fixture.type
|
35
|
+
}
|
36
|
+
model = store.push(modelName, fixture);
|
37
|
+
store.setAssociationsForRESTAdapter(modelType, modelName, model);
|
32
38
|
});
|
33
39
|
return model;
|
34
40
|
}
|
@@ -51,18 +57,32 @@ DS.Store.reopen({
|
|
51
57
|
},
|
52
58
|
|
53
59
|
/**
|
54
|
-
Set the belongsTo
|
55
|
-
with models that have a hasMany association.
|
60
|
+
Set the hasMany and belongsTo associations for FixtureAdapter.
|
56
61
|
|
57
|
-
For example
|
58
|
-
|
59
|
-
|
62
|
+
For example, assuming a user hasMany projects, if you make a project,
|
63
|
+
then a user with that project in the users list of project, then this method
|
64
|
+
will go back and set the user.id on each project that the user hasMany of,
|
65
|
+
so that the project now has the belongsTo user association setup.
|
66
|
+
As in this scenario:
|
67
|
+
|
68
|
+
```js
|
69
|
+
var projectJson = store.makeFixture('project');
|
70
|
+
var userJson = store.makeFixture('user', {projects: [projectJson.id]});
|
71
|
+
```
|
72
|
+
|
73
|
+
Or if you make a project with a user, then set this project in
|
74
|
+
the users list of 'projects' it hasMany of. As in this scenario:
|
60
75
|
|
61
|
-
|
76
|
+
```js
|
77
|
+
var userJson = store.makeFixture('user');
|
78
|
+
var projectJson = store.makeFixture('project', {user: userJson.id});
|
79
|
+
```
|
80
|
+
|
81
|
+
@param {DS.Model} modelType model type like User
|
62
82
|
@param {String} modelName model name like 'user'
|
63
|
-
@param {Object}
|
83
|
+
@param {Object} fixture to check for needed association assignments
|
64
84
|
*/
|
65
|
-
|
85
|
+
setAssociationsForFixtureAdapter: function(modelType, modelName, fixture) {
|
66
86
|
var self = this;
|
67
87
|
var adapter = this.adapterFor('application');
|
68
88
|
Ember.get(modelType, 'relationshipsByName').forEach(function (name, relationship) {
|
@@ -79,7 +99,11 @@ DS.Store.reopen({
|
|
79
99
|
if (relationship.kind == 'belongsTo') {
|
80
100
|
var belongsToRecord = fixture[relationship.key];
|
81
101
|
if (belongsToRecord) {
|
82
|
-
|
102
|
+
if (typeof belongsToRecord == 'object') {
|
103
|
+
FactoryGuy.pushFixture(relationship.type, belongsToRecord);
|
104
|
+
fixture[relationship.key] = belongsToRecord.id;
|
105
|
+
}
|
106
|
+
var hasManyName = self.findHasManyRelationshipName(relationship.type, relationship.parentType);
|
83
107
|
var belongsToFixtures = adapter.fixturesForType(relationship.type);
|
84
108
|
var belongsTofixture = adapter.findFixtureById(belongsToFixtures, fixture[relationship.key]);
|
85
109
|
if (!belongsTofixture[hasManyName]) {
|
@@ -92,21 +116,56 @@ DS.Store.reopen({
|
|
92
116
|
},
|
93
117
|
|
94
118
|
/**
|
95
|
-
|
119
|
+
Before pushing the fixture to the store, do some preprocessing.
|
96
120
|
|
97
|
-
|
121
|
+
If its a belongs to association, and the fixture has an object there,
|
122
|
+
then push that model to the store and set the id of that new model
|
123
|
+
as the attribute value in the fixture
|
124
|
+
|
125
|
+
If it's a hasMany association, and its polymorphic, then convert the
|
126
|
+
attribute value to a polymorphic style
|
127
|
+
|
128
|
+
@param modelType
|
129
|
+
@param fixture
|
130
|
+
*/
|
131
|
+
findEmbeddedBelongsToAssociationsForRESTAdapter: function (modelType, fixture) {
|
132
|
+
var store = this;
|
133
|
+
Ember.get(modelType, 'relationshipsByName').forEach(function (name, relationship) {
|
134
|
+
if (relationship.kind == 'belongsTo') {
|
135
|
+
var belongsToRecord = fixture[relationship.key];
|
136
|
+
if (typeof belongsToRecord == 'object') {
|
137
|
+
belongsToRecord = store.push(relationship.type, belongsToRecord);
|
138
|
+
fixture[relationship.key] = belongsToRecord;
|
139
|
+
}
|
140
|
+
}
|
141
|
+
})
|
142
|
+
},
|
98
143
|
|
99
|
-
|
144
|
+
/**
|
145
|
+
For the REST type models:
|
100
146
|
|
101
147
|
For example if a user hasMany projects, then set the user
|
102
148
|
on each project that the user hasMany of, so that the project
|
103
|
-
now has the belongsTo user association setup
|
149
|
+
now has the belongsTo user association setup. As in this scenario:
|
150
|
+
|
151
|
+
```js
|
152
|
+
var project = store.makeFixture('project');
|
153
|
+
var user = store.makeFixture('user', {projects: [project]});
|
154
|
+
```
|
155
|
+
|
156
|
+
Or if you make a user, then a project with that user, then set the project
|
157
|
+
in the users list of 'projects' it hasMany of. As in this scenario:
|
158
|
+
|
159
|
+
```js
|
160
|
+
var user = store.makeFixture('user');
|
161
|
+
var project = store.makeFixture('project', {user: user});
|
162
|
+
```
|
104
163
|
|
105
164
|
@param {DS.Model} modelType model type like 'User'
|
106
165
|
@param {String} modelName model name like 'user'
|
107
|
-
@param {DS.Model} model
|
166
|
+
@param {DS.Model} model model to check for needed association assignments
|
108
167
|
*/
|
109
|
-
|
168
|
+
setAssociationsForRESTAdapter: function (modelType, modelName, model) {
|
110
169
|
var self = this;
|
111
170
|
Ember.get(modelType, 'relationshipsByName').forEach(function (name, relationship) {
|
112
171
|
if (relationship.kind == 'hasMany') {
|
@@ -119,31 +178,22 @@ DS.Store.reopen({
|
|
119
178
|
if (relationship.kind == 'belongsTo') {
|
120
179
|
var belongsToRecord = model.get(name);
|
121
180
|
if (belongsToRecord) {
|
122
|
-
var hasManyName = self.findHasManyRelationshipName(
|
181
|
+
var hasManyName = self.findHasManyRelationshipName(
|
182
|
+
belongsToRecord.constructor,
|
183
|
+
model.constructor
|
184
|
+
)
|
123
185
|
belongsToRecord.get(hasManyName).addObject(model);
|
124
186
|
}
|
125
187
|
}
|
126
188
|
})
|
127
189
|
},
|
128
190
|
|
129
|
-
|
130
|
-
var relationshipName;
|
131
|
-
Ember.get(belongToModel, 'relationshipsByName').forEach(
|
132
|
-
function (name, relationship) {
|
133
|
-
if (relationship.kind == 'hasMany' &&
|
134
|
-
relationship.type == childModel) {
|
135
|
-
relationshipName = relationship.key;
|
136
|
-
}
|
137
|
-
}
|
138
|
-
)
|
139
|
-
return relationshipName;
|
140
|
-
},
|
141
|
-
findHasManyRelationshipName: function (belongToModel, childModel) {
|
191
|
+
findHasManyRelationshipName: function (belongToModelType, childModelType) {
|
142
192
|
var relationshipName;
|
143
|
-
Ember.get(
|
193
|
+
Ember.get(belongToModelType, 'relationshipsByName').forEach(
|
144
194
|
function (name, relationship) {
|
145
195
|
if (relationship.kind == 'hasMany' &&
|
146
|
-
relationship.type ==
|
196
|
+
relationship.type == childModelType) {
|
147
197
|
relationshipName = relationship.key;
|
148
198
|
}
|
149
199
|
}
|
@@ -219,7 +269,10 @@ DS.FixtureAdapter.reopen({
|
|
219
269
|
relationShips.belongsTo.forEach(function (relationship) {
|
220
270
|
var belongsToRecord = record.get(relationship);
|
221
271
|
if (belongsToRecord) {
|
222
|
-
var hasManyName = store.findHasManyRelationshipName(
|
272
|
+
var hasManyName = store.findHasManyRelationshipName(
|
273
|
+
belongsToRecord.constructor,
|
274
|
+
record.constructor
|
275
|
+
);
|
223
276
|
belongsToRecord.get(hasManyName).addObject(record);
|
224
277
|
}
|
225
278
|
})
|
@@ -13,7 +13,7 @@ module('FactoryGuy with ActiveModelAdapter', {
|
|
13
13
|
|
14
14
|
test("#resetModels clears the store of models, and resets the model definition", function() {
|
15
15
|
var project = store.makeFixture('project');
|
16
|
-
var user = store.makeFixture('user', {projects: [project
|
16
|
+
var user = store.makeFixture('user', {projects: [project]});
|
17
17
|
|
18
18
|
for (model in FactoryGuy.modelDefinitions) {
|
19
19
|
var definition = FactoryGuy.modelDefinitions[model];
|
@@ -62,19 +62,29 @@ asyncTest("creates record in the store", function() {
|
|
62
62
|
test("supports hasMany associations", function() {
|
63
63
|
var p1 = store.makeFixture('project');
|
64
64
|
var p2 = store.makeFixture('project');
|
65
|
-
var user = store.makeFixture('user', {projects: [p1
|
65
|
+
var user = store.makeFixture('user', {projects: [p1, p2]})
|
66
66
|
|
67
67
|
equal(user.get('projects.length'), 2);
|
68
68
|
});
|
69
69
|
|
70
|
+
test("supports hasMany polymorphic associations", function() {
|
71
|
+
var sh = store.makeFixture('big_hat');
|
72
|
+
var bh = store.makeFixture('small_hat');
|
73
|
+
var user = store.makeFixture('user', {hats: [sh, bh]})
|
74
|
+
equal(user.get('hats.length'), 2);
|
75
|
+
ok(user.get('hats.firstObject') instanceof BigHat)
|
76
|
+
ok(user.get('hats.lastObject') instanceof SmallHat)
|
77
|
+
});
|
78
|
+
|
70
79
|
|
71
80
|
test("when hasMany associations assigned, belongTo parent is assigned", function() {
|
72
81
|
var p1 = store.makeFixture('project');
|
73
|
-
var user = store.makeFixture('user', {projects: [p1
|
82
|
+
var user = store.makeFixture('user', {projects: [p1]})
|
74
83
|
|
75
84
|
deepEqual(p1.get('user').toJSON(), user.toJSON());
|
76
85
|
});
|
77
86
|
|
87
|
+
|
78
88
|
test("when belongTo parent is assigned, parent adds to hasMany records", function() {
|
79
89
|
var user = store.makeFixture('user');
|
80
90
|
var project = store.makeFixture('project', {user: user});
|
@@ -83,6 +93,19 @@ test("when belongTo parent is assigned, parent adds to hasMany records", functio
|
|
83
93
|
});
|
84
94
|
|
85
95
|
|
96
|
+
test("belongsTo associations defined as attributes in fixture", function() {
|
97
|
+
var project = store.makeFixture('project_with_user');
|
98
|
+
equal(project.get('user') instanceof User, true)
|
99
|
+
deepEqual(project.get('user').toJSON(),{name: 'User1'})
|
100
|
+
|
101
|
+
var project = store.makeFixture('project_with_dude');
|
102
|
+
deepEqual(project.get('user').toJSON(),{name: 'Dude'})
|
103
|
+
|
104
|
+
var project = store.makeFixture('project_with_admin');
|
105
|
+
deepEqual(project.get('user').toJSON(),{name: 'Admin'})
|
106
|
+
})
|
107
|
+
|
108
|
+
|
86
109
|
module('DS.Store#makeList with ActiveModelAdapter', {
|
87
110
|
setup: function() {
|
88
111
|
testHelper = TestHelper.setup(DS.ActiveModelAdapter);
|
data/tests/factory_guy_test.js
CHANGED
@@ -65,10 +65,10 @@ test("Referring to other attributes in attribute definition", function() {
|
|
65
65
|
type: 'normal'
|
66
66
|
},
|
67
67
|
funny_person: {
|
68
|
-
type: function(
|
68
|
+
type: function(f) { return 'funny ' + f.name }
|
69
69
|
},
|
70
70
|
missing_person: {
|
71
|
-
type: function(
|
71
|
+
type: function(f) { return 'level ' + f.brain_size }
|
72
72
|
}
|
73
73
|
});
|
74
74
|
|
@@ -80,6 +80,18 @@ test("Referring to other attributes in attribute definition", function() {
|
|
80
80
|
});
|
81
81
|
|
82
82
|
|
83
|
+
test("Using associations in attribute definition", function() {
|
84
|
+
var json = FactoryGuy.build('project_with_user');
|
85
|
+
deepEqual(json, {id: 1, title: 'Project', user: {id: 1, name: 'User1'}}, 'creates default user for "user" belongsTo attribute');
|
86
|
+
|
87
|
+
var json = FactoryGuy.build('project_with_dude');
|
88
|
+
deepEqual(json, {id: 2, title: 'Project', user: {id: 2, name: 'Dude'}}, 'creates user with optional attributes for "user" belongsTo attribute');
|
89
|
+
|
90
|
+
var json = FactoryGuy.build('project_with_admin');
|
91
|
+
deepEqual(json, {id: 3, title: 'Project', user: {id: 3, name: 'Admin'}}, 'creates named user for "user" belongsTo attribute');
|
92
|
+
});
|
93
|
+
|
94
|
+
|
83
95
|
test("#build creates default json for model", function() {
|
84
96
|
var json = FactoryGuy.build('user');
|
85
97
|
deepEqual(json, {id: 1, name: 'User1'});
|
@@ -118,4 +130,18 @@ test("#buildList creates list of fixtures", function() {
|
|
118
130
|
var userList = FactoryGuy.buildList('user', 2);
|
119
131
|
deepEqual(userList[0], {id: 1, name: 'User1'});
|
120
132
|
deepEqual(userList[1], {id: 2, name: 'User1'});
|
133
|
+
});
|
134
|
+
|
135
|
+
|
136
|
+
test("#lookupDefinitionForFixtureName", function() {
|
137
|
+
equal(!!FactoryGuy.lookupDefinitionForFixtureName('person'), true, 'finds definition if its the same as model name');
|
138
|
+
equal(!!FactoryGuy.lookupDefinitionForFixtureName('funny_person'), true, 'finds definition if its a named fixture');
|
139
|
+
equal(!!FactoryGuy.lookupDefinitionForFixtureName('fake'), false, "return nothing if can't find definition");
|
140
|
+
});
|
141
|
+
|
142
|
+
|
143
|
+
test("#lookupModelForFixtureName", function() {
|
144
|
+
equal(FactoryGuy.lookupModelForFixtureName('person'), 'person', "finds model if its the same as model name");
|
145
|
+
equal(FactoryGuy.lookupModelForFixtureName('funny_person'), 'person', "finds model if it's definition has this named fixture");
|
146
|
+
equal(FactoryGuy.lookupModelForFixtureName('fake'), undefined, "return nothing if can't find definition");
|
121
147
|
});
|
@@ -106,6 +106,29 @@ asyncTest("#makeFixture adds record to hasMany association array for which it be
|
|
106
106
|
})
|
107
107
|
})
|
108
108
|
|
109
|
+
asyncTest("#makeFixture handles default belongsTo associations in fixture", function() {
|
110
|
+
var projectWithUser = store.makeFixture('project_with_user');
|
111
|
+
equal(User.FIXTURES.length, 1);
|
112
|
+
|
113
|
+
store.find('user', 1).then( function(user) {
|
114
|
+
user.get('projects').then( function(projects) {
|
115
|
+
equal(projects.get('length'), 1, "adds hasMany records");
|
116
|
+
equal(projects.get('firstObject.user.id'), 1, "sets belongsTo record");
|
117
|
+
start();
|
118
|
+
})
|
119
|
+
})
|
120
|
+
// TODO.. have to make belongsTo async for fixture adapter
|
121
|
+
// to get this to work
|
122
|
+
// store.find('project', projectWithUser.id).then( function(project) {
|
123
|
+
// console.log('a',project+'', project.id)
|
124
|
+
// console.log('b',project.get('user')+'', project.get('user').toJSON())
|
125
|
+
// project.get('user').then( function(user) {
|
126
|
+
// console.log('c',user.toJSON())
|
127
|
+
// })
|
128
|
+
// start();
|
129
|
+
// })
|
130
|
+
})
|
131
|
+
|
109
132
|
|
110
133
|
asyncTest("#createRecord adds belongsTo association to records it hasMany of", function() {
|
111
134
|
var user = store.makeFixture('user');
|
@@ -13,7 +13,7 @@ module('FactoryGuy with DS.RESTAdapter', {
|
|
13
13
|
|
14
14
|
test("#resetModels clears the store of models, and resets the model definition", function() {
|
15
15
|
var project = store.makeFixture('project');
|
16
|
-
var user = store.makeFixture('user', {projects: [project
|
16
|
+
var user = store.makeFixture('user', {projects: [project]});
|
17
17
|
|
18
18
|
for (model in FactoryGuy.modelDefinitions) {
|
19
19
|
var definition = FactoryGuy.modelDefinitions[model];
|
@@ -61,19 +61,30 @@ asyncTest("creates records in the store", function() {
|
|
61
61
|
test("supports hasMany associations", function() {
|
62
62
|
var p1 = store.makeFixture('project');
|
63
63
|
var p2 = store.makeFixture('project');
|
64
|
-
var user = store.makeFixture('user', {projects: [p1
|
64
|
+
var user = store.makeFixture('user', {projects: [p1, p2]})
|
65
65
|
|
66
66
|
equal(user.get('projects.length'), 2);
|
67
67
|
});
|
68
68
|
|
69
69
|
|
70
|
+
test("supports hasMany polymorphic associations", function() {
|
71
|
+
var sh = store.makeFixture('big_hat');
|
72
|
+
var bh = store.makeFixture('small_hat');
|
73
|
+
var user = store.makeFixture('user', {hats: [sh, bh]})
|
74
|
+
equal(user.get('hats.length'), 2);
|
75
|
+
ok(user.get('hats.firstObject') instanceof BigHat)
|
76
|
+
ok(user.get('hats.lastObject') instanceof SmallHat)
|
77
|
+
});
|
78
|
+
|
79
|
+
|
70
80
|
test("when hasMany associations assigned, belongTo parent is assigned", function() {
|
71
81
|
var p1 = store.makeFixture('project');
|
72
|
-
var user = store.makeFixture('user', {projects: [p1
|
82
|
+
var user = store.makeFixture('user', {projects: [p1]})
|
73
83
|
|
74
84
|
deepEqual(p1.get('user').toJSON(), user.toJSON());
|
75
85
|
});
|
76
86
|
|
87
|
+
|
77
88
|
test("when belongTo parent is assigned, parent adds to hasMany records", function() {
|
78
89
|
var user = store.makeFixture('user');
|
79
90
|
var project = store.makeFixture('project', {user: user});
|
@@ -82,7 +93,19 @@ test("when belongTo parent is assigned, parent adds to hasMany records", functio
|
|
82
93
|
});
|
83
94
|
|
84
95
|
|
85
|
-
|
96
|
+
test("belongsTo associations defined as attributes in fixture", function() {
|
97
|
+
var project = store.makeFixture('project_with_user');
|
98
|
+
equal(project.get('user') instanceof User, true)
|
99
|
+
deepEqual(project.get('user').toJSON(),{name: 'User1'})
|
100
|
+
|
101
|
+
var project = store.makeFixture('project_with_dude');
|
102
|
+
deepEqual(project.get('user').toJSON(),{name: 'Dude'})
|
103
|
+
|
104
|
+
var project = store.makeFixture('project_with_admin');
|
105
|
+
deepEqual(project.get('user').toJSON(),{name: 'Admin'})
|
106
|
+
})
|
107
|
+
|
108
|
+
module('DS.Store#makeList with DS.RESTAdapter', {
|
86
109
|
setup: function() {
|
87
110
|
testHelper = TestHelper.setup(DS.RESTAdapter);
|
88
111
|
store = testHelper.getStore();
|
data/tests/store_test.js
CHANGED