From e24d5bbd48beab8f8a4b133e7be5d61aae3df68c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20J=C3=A4ggi?= Date: Tue, 5 Dec 2023 14:42:48 +0100 Subject: [PATCH 1/2] fix: use getItem for get audit for site --- .../src/service/audits/accessPatterns.js | 13 ++++--------- .../test/unit/service/audits/index.test.js | 16 +++++++++------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js index 7f88103af..5ee2189bf 100644 --- a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js +++ b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js @@ -65,17 +65,12 @@ export const getAuditForSite = async ( auditType, auditedAt, ) => { - const audit = await dynamoClient.query({ - TableName: config.tableNameAudits, - KeyConditionExpression: 'siteId = :siteId AND SK = :sk', - ExpressionAttributeValues: { - ':siteId': siteId, - ':sk': `${auditType}#${auditedAt}`, - }, - Limit: 1, + const audit = await dynamoClient.getItem(config.tableNameAudits, { + siteId, + SK: `${auditType}#${auditedAt}`, }); - return audit.length > 0 ? AuditDto.fromDynamoItem(audit[0]) : null; + return audit ? AuditDto.fromDynamoItem(audit) : null; }; /** diff --git a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js index a671271c4..5257c6d44 100644 --- a/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js +++ b/packages/spacecat-shared-data-access/test/unit/service/audits/index.test.js @@ -110,13 +110,14 @@ describe('Audit Access Pattern Tests', () => { beforeEach(() => { mockDynamoClient = { query: sinon.stub().returns(Promise.resolve([])), + getItem: sinon.stub().resolves(), }; mockLog = { log: sinon.stub() }; exportedFunctions = auditFunctions(mockDynamoClient, TEST_DA_CONFIG, mockLog); }); it('successfully retrieves an audit for a site', async () => { - const mockAuditData = [{ + const mockAuditData = { siteId: 'siteId', auditType: 'lhs-mobile', auditedAt: new Date().toISOString(), @@ -129,21 +130,21 @@ describe('Audit Access Pattern Tests', () => { }, }, fullAuditRef: 'https://someurl.com', - }]; - mockDynamoClient.query.returns(Promise.resolve(mockAuditData)); + }; + mockDynamoClient.getItem.resolves(mockAuditData); const result = await exportedFunctions.getAuditForSite('siteId', 'auditType', 'auditedAt'); expect(result).to.not.be.null; expect(result.getScores()).to.be.an('object'); - expect(mockDynamoClient.query.calledOnce).to.be.true; + expect(mockDynamoClient.getItem.calledOnce).to.be.true; }); it('returns null if no audit is found for a site', async () => { - mockDynamoClient.query.returns(Promise.resolve([])); + mockDynamoClient.getItem.resolves(undefined); const result = await exportedFunctions.getAuditForSite('siteId', 'auditType', 'auditedAt'); expect(result).to.be.null; - expect(mockDynamoClient.query.calledOnce).to.be.true; + expect(mockDynamoClient.getItem.calledOnce).to.be.true; }); }); @@ -170,6 +171,7 @@ describe('Audit Access Pattern Tests', () => { beforeEach(() => { mockDynamoClient = { query: sinon.stub().returns(Promise.resolve([])), + getItem: sinon.stub().returns(Promise.resolve()), putItem: sinon.stub().returns(Promise.resolve()), removeItem: sinon.stub().returns(Promise.resolve()), }; @@ -193,7 +195,7 @@ describe('Audit Access Pattern Tests', () => { }); it('throws an error if audit already exists', async () => { - mockDynamoClient.query.returns(Promise.resolve([auditData])); + mockDynamoClient.getItem.resolves(auditData); await expect(exportedFunctions.addAudit(auditData)).to.be.rejectedWith('Audit already exists'); }); From dc3363a5633c0a0fae5690d2c7eb50e96e4de577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20J=C3=A4ggi?= Date: Tue, 5 Dec 2023 14:45:11 +0100 Subject: [PATCH 2/2] fix: begins_with not needed --- .../src/service/audits/accessPatterns.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js index 5ee2189bf..7c23dd317 100644 --- a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js +++ b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js @@ -153,7 +153,7 @@ export const getLatestAuditForSite = async ( ) => { const latestAudit = await dynamoClient.query({ TableName: config.tableNameLatestAudits, - KeyConditionExpression: 'siteId = :siteId AND begins_with(auditType, :auditType)', + KeyConditionExpression: 'siteId = :siteId AND auditType = :auditType', ExpressionAttributeValues: { ':siteId': siteId, ':auditType': `${auditType}`,