Skip to content

Commit

Permalink
Not serialize relationships if no links, data, or meta are deduce
Browse files Browse the repository at this point in the history
closes #41
  • Loading branch information
danivek committed Aug 21, 2019
1 parent 00dc3f6 commit 1a71093
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 24 deletions.
25 changes: 10 additions & 15 deletions lib/JSONAPISerializer.js
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ module.exports = class JSONAPISerializer {
relationshipKey = relationshipOptions.alternativeKey;
}

let serializeRelationship = {
const serializeRelationship = {
links: this.processOptionsValues(data, extraData, relationshipOptions.links),
meta: this.processOptionsValues(data, extraData, relationshipOptions.meta),
data: this.serializeRelationship(
Expand All @@ -624,23 +624,18 @@ module.exports = class JSONAPISerializer {
)
};

// Avoid empty relationship object
if (
serializeRelationship.data === undefined &&
serializeRelationship.links === undefined &&
serializeRelationship.meta === undefined
serializeRelationship.data !== undefined ||
serializeRelationship.links !== undefined ||
serializeRelationship.meta !== undefined
) {
serializeRelationship = {
data: null
};
}
// Convert case
relationship = options.convertCase
? this._convertCase(relationship, options.convertCase)
: relationship;

// Convert case
relationship = options.convertCase
? this._convertCase(relationship, options.convertCase)
: relationship;

serializedRelationships[relationship] = serializeRelationship;
serializedRelationships[relationship] = serializeRelationship;
}
});

return Object.keys(serializedRelationships).length ? serializedRelationships : undefined;
Expand Down
11 changes: 2 additions & 9 deletions test/unit/JSONAPISerializer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -501,18 +501,11 @@ describe('JSONAPISerializer', function() {
done();
});

it('should return at least data null if no links, data, or meta are deduce', function(done) {
it('should not serialize relationships if no links, data, or meta are deduce', function(done) {
const serializedRelationships = Serializer.serializeRelationships({
id: '1',
}, Serializer.schemas.articles.default);
expect(serializedRelationships).to.eql({
author: {
data: null
},
comments: {
data: null
}
})
expect(serializedRelationships).to.be.undefined;
done();
});

Expand Down

0 comments on commit 1a71093

Please sign in to comment.