From fa547810bc091c7c07bbf2d34a6e1780fa4f93c5 Mon Sep 17 00:00:00 2001 From: Roland Sadowski Date: Wed, 23 Apr 2025 11:28:59 +0100 Subject: [PATCH 1/3] fix: for empty issue list --- src/middleware/entityIssueDetails.middleware.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/middleware/entityIssueDetails.middleware.js b/src/middleware/entityIssueDetails.middleware.js index 3c698e502..bd2335e26 100644 --- a/src/middleware/entityIssueDetails.middleware.js +++ b/src/middleware/entityIssueDetails.middleware.js @@ -88,6 +88,10 @@ export function prepareEntity (req, res, next) { const { issueEntities, issues, specification } = req const { pageNumber, issue_type: issueType } = req.parsedParams + if (!issueEntities || (issueEntities && issueEntities.length === 0)) { + return next(new MiddlewareError('No issues for entity', 404)) + } + const entityData = issueEntities[pageNumber - 1] const entityIssues = issues.filter(issue => issue.entity === entityData.entity) From ab6f2cf764dd11193b7c679ad673a0b0579aaa77 Mon Sep 17 00:00:00 2001 From: Roland Sadowski Date: Wed, 23 Apr 2025 11:49:28 +0100 Subject: [PATCH 2/3] update entity issue details unit tests --- .../entityIssueDetails.middleware.test.js | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/test/unit/middleware/entityIssueDetails.middleware.test.js b/test/unit/middleware/entityIssueDetails.middleware.test.js index b5a03326b..994e0b788 100644 --- a/test/unit/middleware/entityIssueDetails.middleware.test.js +++ b/test/unit/middleware/entityIssueDetails.middleware.test.js @@ -68,27 +68,32 @@ describe('issueDetails.middleware.js', () => { }) describe('prepareEntity', () => { - const req = {} - const res = {} - - beforeEach(() => { - req.issueEntities = [ + const reqTemplate = { + issueEntities: [ { entity: 'entity1', name: 'Entity 1', field1: 'value1', field2: 'value2', geometry: 'POINT (-0.10 51.49)' }, { entity: 'entity2', name: 'Entity 2', field1: 'value3', field2: 'value4', geometry: undefined } - ] - req.issues = [ + ], + issues: [ { entity: 'entity1', field: 'field1', message: 'Error 1' }, { entity: 'entity1', field: 'field2', message: 'Error 2' }, { entity: 'entity2', field: 'field1', message: 'Error 3' } - ] - req.specification = { + ], + specification: { fields: [ { field: 'field1', datasetField: 'datasetField1' }, { field: 'field2', datasetField: 'datasetField2' }, { field: 'geometry', datasetField: 'geometry_field' } ] - } - req.parsedParams = { pageNumber: 1, issue_type: 'issueType' } + }, + parsedParams: { pageNumber: 1, issue_type: 'issueType' } + } + const resTemplate = {} + let req = {} + let res = {} + + beforeEach(() => { + req = structuredClone(reqTemplate) + res = structuredClone(resTemplate) }) it('should set req.entry with correct title and fields', () => { @@ -154,6 +159,14 @@ describe('issueDetails.middleware.js', () => { geometries: [] }) }) + it('should handle no issueEntities', () => { + const request = structuredClone(req) + Object.assign(request, { issueEntities: [] }) + const next = vi.fn() + prepareEntity(request, {}, next) + expect(request.entry).toBeUndefined() + expect(next).toHaveBeenCalledWith(new MiddlewareError('No issues for entity', 404)) + }) }) describe('getIssueDetails', () => { From b58bdeaa0f10ae8399e25b0ff8c7f143a1ec8949 Mon Sep 17 00:00:00 2001 From: Roland Sadowski Date: Wed, 23 Apr 2025 16:35:43 +0100 Subject: [PATCH 3/3] minor cleanups --- src/middleware/entityIssueDetails.middleware.js | 2 +- test/unit/middleware/entityIssueDetails.middleware.test.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/middleware/entityIssueDetails.middleware.js b/src/middleware/entityIssueDetails.middleware.js index bd2335e26..5a53ac44b 100644 --- a/src/middleware/entityIssueDetails.middleware.js +++ b/src/middleware/entityIssueDetails.middleware.js @@ -88,7 +88,7 @@ export function prepareEntity (req, res, next) { const { issueEntities, issues, specification } = req const { pageNumber, issue_type: issueType } = req.parsedParams - if (!issueEntities || (issueEntities && issueEntities.length === 0)) { + if (!issueEntities || issueEntities.length === 0) { return next(new MiddlewareError('No issues for entity', 404)) } diff --git a/test/unit/middleware/entityIssueDetails.middleware.test.js b/test/unit/middleware/entityIssueDetails.middleware.test.js index 994e0b788..7e4704ca0 100644 --- a/test/unit/middleware/entityIssueDetails.middleware.test.js +++ b/test/unit/middleware/entityIssueDetails.middleware.test.js @@ -44,7 +44,7 @@ describe('issueDetails.middleware.js', () => { expect(next).toHaveBeenCalledTimes(1) }) - it('sets the record count to 0 if req.issues is undefined', () => { + it('sets the record count to 0 if req.issueEntities is undefined', () => { const req = {} const res = {} const next = vi.fn() @@ -55,8 +55,8 @@ describe('issueDetails.middleware.js', () => { expect(next).toHaveBeenCalledTimes(1) }) - it('sets the record count to 0 if req.issues is null', () => { - const req = { issues: null } + it('sets the record count to 0 if req.issueEntities is undefined', () => { + const req = { issues: null, issueEntities: undefined } const res = {} const next = vi.fn()