From 074069f6628550c5777cd565bd138d93ae203975 Mon Sep 17 00:00:00 2001 From: irisfaraway Date: Thu, 6 Jun 2024 14:44:21 +0100 Subject: [PATCH] Add new query based on full reference number https://eaflood.atlassian.net/browse/IWTF-4017 This is required for IWTF-4017 as we will need a new function within the Sales API to retrieve data about a permission based on its full reference number. See https://github.com/DEFRA/rod-licensing/pull/1957 for further implementation. --- .../__tests__/permission.queries.spec.js | 18 +++++++++++++++++- .../src/queries/permission.queries.js | 11 +++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/dynamics-lib/src/queries/__tests__/permission.queries.spec.js b/packages/dynamics-lib/src/queries/__tests__/permission.queries.spec.js index 584ca3d0a9..6cdc506184 100644 --- a/packages/dynamics-lib/src/queries/__tests__/permission.queries.spec.js +++ b/packages/dynamics-lib/src/queries/__tests__/permission.queries.spec.js @@ -1,4 +1,4 @@ -import { permissionForLicensee } from '../permission.queries.js' +import { permissionForLicensee, permissionForFullReferenceNumber } from '../permission.queries.js' describe('Permission Queries', () => { describe('permissionForLicensee', () => { @@ -17,4 +17,20 @@ describe('Permission Queries', () => { }) }) }) + + describe('permissionForFullReferenceNumber', () => { + it('builds a filter to run a query for a permission with a full reference number', async () => { + const query = permissionForFullReferenceNumber('ABC123') + expect(query.toRetrieveRequest()).toEqual({ + collection: 'defra_permissions', + expand: expect.arrayContaining([ + expect.objectContaining({ property: 'defra_ContactId' }), + expect.objectContaining({ property: 'defra_PermitId' }), + expect.objectContaining({ property: 'defra_defra_permission_defra_concessionproof_PermissionId' }) + ]), + filter: "defra_name eq 'ABC123' and statecode eq 0", + select: expect.any(Array) + }) + }) + }) }) diff --git a/packages/dynamics-lib/src/queries/permission.queries.js b/packages/dynamics-lib/src/queries/permission.queries.js index 5a0ea2c76f..ec2018cc07 100644 --- a/packages/dynamics-lib/src/queries/permission.queries.js +++ b/packages/dynamics-lib/src/queries/permission.queries.js @@ -24,3 +24,14 @@ export const permissionForLicensee = (permissionReferenceNumber, licenseeBirthDa expand: [licensee, permit, concessionProofs] }) } + +export const permissionForFullReferenceNumber = permissionReferenceNumber => { + const { licensee, permit, concessionProofs } = Permission.definition.relationships + let filter = `${Permission.definition.mappings.referenceNumber.field} eq '${escapeODataStringValue(permissionReferenceNumber)}'` + filter += ` and ${Permission.definition.defaultFilter}` + return new PredefinedQuery({ + root: Permission, + filter: filter, + expand: [licensee, permit, concessionProofs] + }) +}