diff --git a/CHANGELOG.md b/CHANGELOG.md index a45e1f99..eaaba8dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 13.0.0 IN PROGRESS +* Display Anonymized when searching requests. Refs UIREQ-1312. * *BREAKING* Use `convertToSlipData` and supporting functions from `stripes-util`. Refs UIREQ-1263. * Replace moment with day.js. Refs UIREQ-1291. * Reduce count of eslint errors after update eslint-config-stripes. Refs UIREQ-1289. diff --git a/src/deprecated/routes/RequestsRoute/RequestsRoute.js b/src/deprecated/routes/RequestsRoute/RequestsRoute.js index e7a75ffa..1aa7de84 100644 --- a/src/deprecated/routes/RequestsRoute/RequestsRoute.js +++ b/src/deprecated/routes/RequestsRoute/RequestsRoute.js @@ -215,6 +215,19 @@ export const urls = { }, }; +function userFormatter(id, user) { + if (user) { + return getFullName(user); + } + + if (id) { + // User has been deleted + return ; + } + + return ; +} + export const getListFormatter = ( { getRowURL, @@ -241,13 +254,13 @@ export const getListFormatter = ( />), 'itemBarcode': rq => (rq?.item?.barcode || ), 'position': rq => (rq.position || ), - 'proxy': rq => (rq.proxy ? getFullName(rq.proxy) : ), + 'proxy': rq => userFormatter(rq.proxyUserId, rq.proxy), 'requestDate': rq => ( ), - 'requester': rq => (rq.requester ? getFullName(rq.requester) : ), + 'requester': rq => userFormatter(rq.requesterId, rq.requester), 'singlePrint': rq => { const singlePrintButtonProps = { request: rq, diff --git a/src/deprecated/routes/RequestsRoute/RequestsRoute.test.js b/src/deprecated/routes/RequestsRoute/RequestsRoute.test.js index 6576c563..5ad23939 100644 --- a/src/deprecated/routes/RequestsRoute/RequestsRoute.test.js +++ b/src/deprecated/routes/RequestsRoute/RequestsRoute.test.js @@ -89,6 +89,7 @@ const testIds = { singlePrintButton: 'singlePrintButton', rowCheckbox: 'rowCheckbox', selectRequestCheckbox: 'selectRequestCheckbox', + anonymized: 'ui-requests.requestMeta.anonymized', }; const intlCache = createIntlCache(); @@ -231,6 +232,7 @@ const labelIds = { titleWithSearch: 'ui-requests.documentTitle.search', defaultTitle: 'ui-requests.meta.title', recordsSelected: 'ui-requests.rows.recordsSelected', + anonymized: 'ui-requests.requestMeta.anonymized', }; const mockedRequest = { requestLevel: REQUEST_LEVEL_TYPES.ITEM, @@ -1268,9 +1270,16 @@ describe('RequestsRoute', () => { expect(listFormatter.proxy(requestWithData)).toBe(mockProxy); }); - it('should trigger NoValue component', () => { + it('should render Anonymized', () => { render(listFormatter.proxy(requestWithoutData)); + expect(screen.getByText(labelIds.anonymized)).toBeInTheDocument(); + }); + + it('should trigger NoValue component', () => { + const req = { ...requestWithoutData, proxyUserId: 'deleted proxy user' }; + render(listFormatter.proxy(req)); + expect(NoValue).toHaveBeenCalled(); }); }); @@ -1305,9 +1314,16 @@ describe('RequestsRoute', () => { expect(listFormatter.requester(requestWithData)).toBe(mockRequester); }); - it('should trigger NoValue component', () => { + it('should render Anonymized', () => { render(listFormatter.requester(requestWithoutData)); + expect(screen.getByText(labelIds.anonymized)).toBeInTheDocument(); + }); + + it('should trigger NoValue component', () => { + const req = { ...requestWithoutData, requesterId: 'deleted requester' }; + render(listFormatter.requester(req)); + expect(NoValue).toHaveBeenCalled(); }); }); diff --git a/src/routes/RequestsRoute.js b/src/routes/RequestsRoute.js index 9dfe49aa..057c585a 100644 --- a/src/routes/RequestsRoute.js +++ b/src/routes/RequestsRoute.js @@ -232,6 +232,19 @@ export const urls = { }, }; +function userFormatter(id, user) { + if (user) { + return getFullName(user); + } + + if (id) { + // User has been deleted + return ; + } + + return ; +} + export const getListFormatter = ( { getRowURL, @@ -259,13 +272,13 @@ export const getListFormatter = ( />), 'itemBarcode': rq => (rq?.item?.barcode || ), 'position': rq => (rq.position || ), - ...(isProxyAvailable ? { 'proxy': rq => (rq.proxy ? getFullName(rq.proxy) : ) } : {}), + ...(isProxyAvailable ? { 'proxy': rq => userFormatter(rq.proxyUserId, rq.proxy) } : {}), 'requestDate': rq => ( ), - 'requester': rq => (rq.requester ? getFullName(rq.requester) : ), + 'requester': rq => userFormatter(rq.requesterId, rq.requester), 'singlePrint': rq => { const singlePrintButtonProps = { request: rq, diff --git a/src/routes/RequestsRoute.test.js b/src/routes/RequestsRoute.test.js index 53a569cf..ec2422ec 100644 --- a/src/routes/RequestsRoute.test.js +++ b/src/routes/RequestsRoute.test.js @@ -236,6 +236,7 @@ const labelIds = { titleWithSearch: 'ui-requests.documentTitle.search', defaultTitle: 'ui-requests.meta.title', recordsSelected: 'ui-requests.rows.recordsSelected', + anonymized: 'ui-requests.requestMeta.anonymized', }; const mockedRequest = { requestLevel: REQUEST_LEVEL_TYPES.ITEM, @@ -1422,9 +1423,16 @@ describe('RequestsRoute', () => { expect(listFormatter.proxy(requestWithData)).toBe(mockProxy); }); - it('should trigger NoValue component', () => { + it('should render Anonymized', () => { render(listFormatter.proxy(requestWithoutData)); + expect(screen.getByText(labelIds.anonymized)).toBeInTheDocument(); + }); + + it('should trigger NoValue component', () => { + const req = { ...requestWithoutData, proxyUserId: 'deleted proxy user' }; + render(listFormatter.proxy(req)); + expect(NoValue).toHaveBeenCalled(); }); }); @@ -1459,9 +1467,16 @@ describe('RequestsRoute', () => { expect(listFormatter.requester(requestWithData)).toBe(mockRequester); }); - it('should trigger NoValue component', () => { + it('should trigger Anonymized component', () => { render(listFormatter.requester(requestWithoutData)); + expect(screen.getByText(labelIds.anonymized)).toBeInTheDocument(); + }); + + it('should trigger NoValue component', () => { + const req = { ...requestWithoutData, requesterId: 'deleted requester' }; + render(listFormatter.requester(req)); + expect(NoValue).toHaveBeenCalled(); }); });