From f6b3b1d113a5fc16a665292f05b4c087d38f17eb Mon Sep 17 00:00:00 2001 From: yevhen-ctbto Date: Thu, 25 Apr 2019 12:04:48 +0200 Subject: [PATCH] https://github.com/mohuk/ts-jsonapi/issues/11 --- package.json | 2 +- src/deserializer-utils.ts | 2 ++ test/deserializer.js | 36 ++++++++++++++++++++++++++++++++++-- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index eb953eb..f9d4688 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ts-jsonapi", - "version": "2.1.2", + "version": "2.1.3", "description": "JSON API (De) Serializer in Typescript", "main": "lib/index.js", "module": "lib/index.js", diff --git a/src/deserializer-utils.ts b/src/deserializer-utils.ts index 12b0567..9189fc0 100644 --- a/src/deserializer-utils.ts +++ b/src/deserializer-utils.ts @@ -21,6 +21,8 @@ export class DeserializerUtils { .valueForRelationship; return valueForRelationshipFct(relationshipData, included); + } else if (!included && relationshipData) { + return {id: relationshipData.id} } else { return included; } diff --git a/test/deserializer.js b/test/deserializer.js index 45c5e60..88aabbd 100644 --- a/test/deserializer.js +++ b/test/deserializer.js @@ -370,13 +370,14 @@ describe('JSON API Deserializer', function () { } }}); - expect(json[1]).to.have.key('id', 'first-name', 'last-name','address'); + expect(json[1]).to.have.key('id', 'first-name', 'last-name', 'address'); expect(json[1].address).to.be.eql({ id: '54735697e16624ba1eee36bf', 'address-line1': '361 Shady Lane', 'zip-code': '23185', - country: 'USA' + country: 'USA', + lock: {id: "2"} }); done(); @@ -545,6 +546,34 @@ describe('JSON API Deserializer', function () { done(null, json); }); + + it('return id by default if no included found', function (done) { + var dataSet = { + data: [{ + type: 'users', + id: '54735750e16638ba1eee59cb', + attributes: { + 'first-name': 'Yevhen', + 'last-name': 'Baidiuk' + }, + relationships: { + address: { + data: { type: 'address', id: '66635722e16620ba1eee36af' } + } + } + }] + }; + + var json = new JSONAPIDeserializer().deserialize(dataSet); + + expect(json).to.be.an('array').with.length(1); + expect(json[0]).to.have.key('id', 'first-name', 'last-name', 'address'); + expect(json[0].address).to.be.eql({ + id: '66635722e16620ba1eee36af' + }); + + done(null, json); + }); }); describe('With empty relationship', function () { @@ -778,6 +807,9 @@ describe('JSON API Deserializer', function () { address_line1: '406 Madison Court', zip_code: '49426', id: '54735722e16620ba1eee36af', + country: { + id: "54735722e16609ba1eee36af" + } } } });