Skip to content

Commit 049d2d3

Browse files
author
Lee Richmond
committed
Ensure unknown relations are not set
1 parent dc569ae commit 049d2d3

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/util/deserialize.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,25 @@ class Deserializer {
5353
}
5454

5555
_processRelationships(instance, relationships) {
56-
for (let key in relationships) {
57-
let relationData = relationships[key].data;
58-
if(!relationData) continue; // only links, empty, etc
59-
56+
this._iterateValidRelationships(instance, relationships, (relationName, relationData) => {
6057
if (Array.isArray(relationData)) {
6158
for (let datum of relationData) {
6259
let relatedRecord = this.deserialize(datum, true);
63-
instance[key].push(relatedRecord);
60+
instance[relationName].push(relatedRecord);
6461
}
6562
} else {
6663
let relatedRecord = this.deserialize(relationData, true);
67-
instance[key] = relatedRecord;
64+
instance[relationName] = relatedRecord;
65+
}
66+
});
67+
}
68+
69+
_iterateValidRelationships(instance, relationships, callback) {
70+
for (let key in relationships) {
71+
if (instance.klass.attributeList.indexOf(key) >= 0) {
72+
let relationData = relationships[key].data;
73+
if(!relationData) continue; // only links, empty, etc
74+
callback(key, relationData);
6875
}
6976
}
7077
}

test/unit/model-test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ describe('Model', function() {
1717
unknown: 'adsf'
1818
},
1919
relationships: {
20+
unknownrelationship: {
21+
data: {
22+
id: '1',
23+
type: 'unknowns'
24+
}
25+
},
2026
tags: {},
2127
genre: {
2228
data: {
@@ -104,6 +110,11 @@ describe('Model', function() {
104110
expect(instance).to.not.have.property('unknown');
105111
});
106112

113+
it('does not assign unknown relationships', function() {
114+
let instance = Model.fromJsonapi(doc.data, doc);
115+
expect(instance).to.not.have.property('unknownrelationship');
116+
});
117+
107118
it('assigns metadata correctly', function() {
108119
let instance = Model.fromJsonapi(doc.data, doc);
109120
expect(instance.__meta__).to.eql({

0 commit comments

Comments
 (0)