Skip to content

Commit 9c3e7ca

Browse files
committed
Fixed hasMany relations. More tests.
1 parent 3d99ef5 commit 9c3e7ca

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/datastore/async_methods/loadRelations.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,11 @@ function loadRelations(resourceName, instance, relations, options) {
106106
var fields = [];
107107

108108
if (DSUtils.isArray(instance)) {
109-
angular.forEach(instance, function (object) {
110-
tasks.push(DS.loadRelations(resourceName, object, relations, options));
109+
angular.forEach(instance, function (object, index) {
110+
options = DSUtils._({}, options);
111+
tasks.push(DS.loadRelations(resourceName, object, relations, options).then(function(object) {
112+
instance[index] = DSUtils.deepMixIn({}, object);
113+
}));
111114
});
112115
} else {
113116
DSUtils.forEach(definition.relationList, function (def) {

test/integration/datastore/async_methods/loadRelations.test.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ describe('DS.loadRelations(resourceName, instance(Id), relations[, options]): ',
209209

210210
$httpBackend.flush();
211211
});
212-
it('should load relations from array of integers', function () {
212+
it('should load belongsto relations from array of integers', function () {
213213
DS.inject('user', user10);
214214
DS.inject('user', user16);
215215

@@ -225,7 +225,7 @@ describe('DS.loadRelations(resourceName, instance(Id), relations[, options]): ',
225225

226226
$httpBackend.flush();
227227
});
228-
it('should load relations from collection', function () {
228+
it('should load belongsto relations from collection', function () {
229229
DS.inject('user', user10);
230230
DS.inject('user', user16);
231231

@@ -239,6 +239,23 @@ describe('DS.loadRelations(resourceName, instance(Id), relations[, options]): ',
239239
assert.equal(users[1].organization.id, organization15.id);
240240
}, fail);
241241

242+
$httpBackend.flush();
243+
});
244+
it('should load hasmany relations from collection', function () {
245+
246+
DS.inject('organization', organization14);
247+
DS.inject('organization', organization15);
248+
249+
$httpBackend.expectGET('http://test.angular-cache.com/organization/14/user').respond(200, [user10]);
250+
$httpBackend.expectGET('http://test.angular-cache.com/organization/15/user').respond(200, [user16]);
251+
252+
DS.loadRelations('organization', [organization14, organization15], ['user']).then(function (organizations) {
253+
assert.isObject(organization14.users[0]);
254+
assert.equal(organization14.users[0].id, 10);
255+
assert.isObject(organization15.users[0]);
256+
assert.equal(organization15.users[0].id, 16);
257+
});
258+
242259
$httpBackend.flush();
243260
});
244261
});

0 commit comments

Comments
 (0)