Skip to content

Commit

Permalink
inventory_view: deduplicate worksTree subarrays
Browse files Browse the repository at this point in the history
  • Loading branch information
maxlath committed Feb 25, 2020
1 parent 15594b9 commit 6474ec7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
12 changes: 11 additions & 1 deletion server/controllers/items/inventory_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ const getInventoryViews = ({ authorizationLevel, usersIds }) => {

const mergeInventoryViews = inventoryViews => {
if (inventoryViews.length === 1) return inventoryViews[0]
return _.mergeWith(...inventoryViews, concatArraysCustomizer)
const mergedInventoryViews = _.mergeWith(...inventoryViews, concatArraysCustomizer)
deduplicateWorksTree(mergedInventoryViews.worksTree)
return mergedInventoryViews
}

// Source: https://lodash.com/docs/4.17.15#mergeWith example
Expand All @@ -56,3 +58,11 @@ const generateItemsByDateList = inventoryView => {
delete inventoryView.timestampedItemsIds
return inventoryView
}

const deduplicateWorksTree = worksTree => {
for (const section in worksTree) {
for (const key in worksTree[section]) {
worksTree[section][key] = _.uniq(worksTree[section][key])
}
}
}
17 changes: 17 additions & 0 deletions tests/api/items/inventory_view.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const { nonAuthReq, undesiredRes, getReservedUser } = __.require('apiTests', 'ut
const endpoint = '/api/items?action=inventory-view'
const { groupPromise, createGroup, addMember } = require('../fixtures/groups')
const { createItem } = require('../fixtures/items')
const { createEdition } = require('../fixtures/entities')
const { createUserWithItems } = require('../fixtures/populate')

describe('items:inventory-view', async () => {
Expand Down Expand Up @@ -57,5 +58,21 @@ describe('items:inventory-view', async () => {
const { itemsByDate } = await nonAuthReq('get', `${endpoint}&group=${group._id}`)
itemsByDate.should.deepEqual([ itemA1Id, itemB1Id, itemA2Id ])
})

it('should return deduplicated worksTree subarrays', async () => {
const memberA = await getReservedUser()
const memberB = await getReservedUser()
const group = await createGroup({ user: memberA })
await addMember({ group, admin: memberA, user: memberB })
const edition = await createEdition()
const workUri = edition.claims['wdt:P629'][0]
await createItem(memberA, { entity: edition.uri })
await createItem(memberB, { entity: edition.uri })
const { worksTree } = await nonAuthReq('get', `${endpoint}&group=${group._id}`)
const { author, genre, subject } = worksTree
author.unknown.should.deepEqual([ workUri ])
genre.unknown.should.deepEqual([ workUri ])
subject.unknown.should.deepEqual([ workUri ])
})
})
})

0 comments on commit 6474ec7

Please sign in to comment.