Skip to content

Commit 74ec809

Browse files
author
Dave Butt
authored
Merge pull request #13 from holidayextras/FP-1042
dont include linked resources already present in the response
2 parents 731c27c + 606768d commit 74ec809

4 files changed

Lines changed: 65 additions & 6 deletions

File tree

lib/pluginJsonapi.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ pluginJsonApi.alsoMakeItSo = function alsoMakeItSo (request, reply) {
6161
var stateObject = {
6262
request: request,
6363
resources: resources,
64+
linked: result.linked,
6465
proxyableKeys: proxyableKeys
6566
}
6667

lib/utilities.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,17 @@ utilities.getSubResources = function getSubResources (stateObject) {
161161
}
162162

163163
stateObject.subResourceRequests = {}
164-
165164
// Loop the resources and pad out any required hrefs
166165
_.forEach(resourceArray, function (resource) {
167166
// If there's no links then there's no actions to take
168167
if (resource.links) {
169-
// Loop all the includes and pad out our subResourceRequest array
168+
// Loop all the includes and if required pad out our subResourceRequest array
170169
_.forEach(stateObject.includes, function (include) {
171-
// If we have links to the requested include, chalk it up
172-
if (resource.links && resource.links[include]) {
170+
if (stateObject.linked && stateObject.linked[include]) {
171+
// We already have these resources
172+
return
173+
}
174+
if (resource.links[include]) {
173175
utilities._addSubResourceRequest(stateObject.subResourceRequests, resource.links[include])
174176
}
175177
})

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "plugin-jsonapi",
33
"description": "A hapi plugin for a jsonapi style output according to our 'house rules'",
4-
"version": "2.1.0",
4+
"version": "2.2.0",
55
"homepage": "https://github.com/holidayextras/plugin-jsonapi",
66
"author": {
77
"name": "Shortbreaks",

test/lib/utilitiesTest.js

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,63 @@ describe('utilities', function () {
113113

114114
return expect(utilities.getSubResources(stateObject)).to.eventually.deep.equal(stateObject)
115115
})
116+
117+
it('should not attach any already linked sub resources', function () {
118+
var stateObject = {
119+
resources: [
120+
{
121+
id: 'ID',
122+
links: {
123+
LINK1: {
124+
ids: ['LINK_ID1'],
125+
type: 'LINK1'
126+
}
127+
}
128+
}
129+
],
130+
includes: ['LINK1'],
131+
linked: {
132+
LINK1: []
133+
}
134+
}
135+
136+
var expected = _.cloneDeep(stateObject)
137+
expected.subResourceRequests = {}
138+
139+
return expect(utilities.getSubResources(stateObject)).to.eventually.deep.equal(expected)
140+
})
141+
142+
it('should not attach any already linked sub resources, but still add unlinked ones', function () {
143+
var stateObject = {
144+
resources: [
145+
{
146+
id: 'ID',
147+
links: {
148+
LINK1: {
149+
ids: ['LINK_ID1'],
150+
type: 'LINK1'
151+
},
152+
LINK2: {
153+
ids: ['LINK_ID2'],
154+
type: 'LINK2'
155+
}
156+
}
157+
}
158+
],
159+
includes: ['LINK1', 'LINK2'],
160+
linked: {
161+
LINK1: []
162+
}
163+
}
164+
165+
var expected = _.cloneDeep(stateObject)
166+
expected.subResourceRequests = {
167+
LINK2: {
168+
ids: ['LINK_ID2']
169+
}
170+
}
171+
return expect(utilities.getSubResources(stateObject)).to.eventually.deep.equal(expected)
172+
})
116173
})
117174

118175
describe('#resolveLinkedData', function () {
@@ -356,7 +413,6 @@ describe('utilities', function () {
356413
expect(links).to.be.deep.equal(expected)
357414
})
358415
})
359-
// _requestSubResource
360416

361417
describe('#collectProxyableValues', function () {
362418
var stateObject = {

0 commit comments

Comments
 (0)