From 77400b3454a39f91b9c6406bc2a956e0b6f1835a Mon Sep 17 00:00:00 2001 From: Josh Salisbury Date: Fri, 12 Mar 2021 14:15:49 -0600 Subject: [PATCH 1/3] Filter main report table to approved reports --- src/services/activityReports.js | 2 +- src/services/activityReports.test.js | 101 +++++++++++++++++---------- 2 files changed, 67 insertions(+), 36 deletions(-) diff --git a/src/services/activityReports.js b/src/services/activityReports.js index 13df41efa5..1de068ba45 100644 --- a/src/services/activityReports.js +++ b/src/services/activityReports.js @@ -328,7 +328,7 @@ export function activityReports(readRegions, { }; return ActivityReport.findAndCountAll( { - where: { regionId: regions }, + where: { regionId: regions, status: REPORT_STATUSES.APPROVED }, attributes: [ 'id', 'displayId', diff --git a/src/services/activityReports.test.js b/src/services/activityReports.test.js index 9370af662b..a0b35eff71 100644 --- a/src/services/activityReports.test.js +++ b/src/services/activityReports.test.js @@ -17,6 +17,7 @@ jest.mock('./goals', () => ({ })); const RECIPIENT_ID = 15; +const GRANTEE_ID = 16; const mockUser = { id: 1000, @@ -74,10 +75,10 @@ describe('Activity Reports DB service', () => { await ActivityReport.destroy({ where: {} }); await User.destroy({ where: { id: mockUser.id } }); await NonGrantee.destroy({ where: { id: RECIPIENT_ID } }); - await Grant.destroy({ where: { id: RECIPIENT_ID } }); - await Grantee.destroy({ where: { id: RECIPIENT_ID } }); + await Grant.destroy({ where: { id: [RECIPIENT_ID, GRANTEE_ID] } }); + await Grantee.destroy({ where: { id: [RECIPIENT_ID, GRANTEE_ID] } }); await Region.destroy({ where: { id: 17 } }); - db.sequelize.close(); + await db.sequelize.close(); }); afterEach(() => { @@ -292,31 +293,71 @@ describe('Activity Reports DB service', () => { }); describe('activityReports retrieval and sorting', () => { - it('retrieves reports with default sort by updatedAt', async () => { - const report = await ActivityReport.create(reportObject); + let latestReport; + let firstGrant; + + const mockUserTwo = { + id: 1002, + homeRegionId: 1, + name: 'a user', + hsesUsername: 'user', + hsesUserId: '1002', + }; + + beforeAll(async () => { + const topicsOne = ['topic d', 'topic c']; + const topicsTwo = ['topic b', 'topic a']; + const firstGrantee = await Grantee.create({ id: GRANTEE_ID, name: 'aaaa' }); + firstGrant = await Grant.create({ id: GRANTEE_ID, number: 'anumber', granteeId: firstGrantee.id }); - const { count, rows } = await activityReports([1], {}); - expect(rows.length).toBe(10); - expect(count).toBeDefined(); - expect(rows[0].id).toBe(report.id); - }); - - it('retrieves reports sorted by author', async () => { - const mockUserTwo = { - id: 1002, - homeRegionId: 1, - name: 'a user', - hsesUsername: 'user', - hsesUserId: '1002', - }; await User.findOrCreate({ where: { id: mockUserTwo.id, }, defaults: mockUserTwo, }); + await ActivityReport.create({ + ...submittedReport, + status: REPORT_STATUSES.APPROVED, + userId: mockUserTwo.id, + topics: topicsOne, + }); + await createOrUpdate({ + ...submittedReport, + status: REPORT_STATUSES.APPROVED, + collaborators: [{ id: mockUser.id }], + }); + await ActivityReport.create({ + ...submittedReport, + status: REPORT_STATUSES.APPROVED, + regionId: 2, + }); + const report = await ActivityReport.create({ + ...submittedReport, + activityRecipients: [{ grantId: firstGrant.id }], + status: REPORT_STATUSES.APPROVED, + topics: topicsTwo, + }); + await ActivityRecipient.create({ + activityReportId: report.id, + grantId: firstGrant.id, + }); + latestReport = await ActivityReport.create({ + ...submittedReport, + status: REPORT_STATUSES.APPROVED, + updatedAt: '1900-01-01T12:00:00Z', + }); + }); + + it('retrieves reports with default sort by updatedAt', async () => { + const { count, rows } = await activityReports([1], {}); + expect(rows.length).toBe(6); + expect(count).toBeDefined(); + expect(rows[0].id).toBe(latestReport.id); + }); + + it('retrieves reports sorted by author', async () => { reportObject.userId = mockUserTwo.id; - await ActivityReport.create(reportObject); const { rows } = await activityReports([1], { sortBy: 'author', sortDir: 'asc', offset: 0, limit: 2, @@ -331,7 +372,7 @@ describe('Activity Reports DB service', () => { const { rows } = await activityReports([1], { sortBy: 'collaborators', sortDir: 'asc', offset: 0, limit: 12, }); - expect(rows.length).toBe(12); + expect(rows.length).toBe(6); expect(rows[0].collaborators[0].name).toBe('user'); }); @@ -342,31 +383,26 @@ describe('Activity Reports DB service', () => { const { rows } = await activityReports([1, 2], { sortBy: 'regionId', sortDir: 'desc', offset: 0, limit: 12, }); - expect(rows.length).toBe(12); + expect(rows.length).toBe(7); expect(rows[0].regionId).toBe(2); }); it('retrieves reports sorted by activity recipients', async () => { - reportObject.regionId = 2; - await ActivityReport.create(reportObject); - const { rows } = await activityReports([1, 2], { sortBy: 'activityRecipients', sortDir: 'asc', offset: 0, limit: 12, }); - expect(rows.length).toBe(12); - expect(rows[0].activityRecipients[0].activityRecipientId).toBe(RECIPIENT_ID); + expect(rows.length).toBe(7); + expect(rows[0].activityRecipients[0].grantId).toBe(firstGrant.id); }); it('retrieves reports sorted by sorted topics', async () => { - reportObject.topics = ['topic d', 'topic c']; await ActivityReport.create(reportObject); - reportObject.topics = ['topic b', 'topic a']; await ActivityReport.create(reportObject); const { rows } = await activityReports([1, 2], { sortBy: 'topics', sortDir: 'asc', offset: 0, limit: 12, }); - expect(rows.length).toBe(12); + expect(rows.length).toBe(7); expect(rows[0].sortedTopics[0]).toBe('topic a'); expect(rows[0].sortedTopics[1]).toBe('topic b'); expect(rows[1].sortedTopics[0]).toBe('topic c'); @@ -376,11 +412,6 @@ describe('Activity Reports DB service', () => { }); it('retrieves myalerts', async () => { - const mockUserTwo = { - id: 1002, - homeRegionId: 1, - name: 'a user', - }; await User.findOrCreate({ where: { id: mockUserTwo.id, From c2cf3f34f8651d03b16407de565b8f94d8bec58f Mon Sep 17 00:00:00 2001 From: Josh Salisbury Date: Fri, 12 Mar 2021 14:40:50 -0600 Subject: [PATCH 2/3] Submitted reports show up in the "My Alerts" table --- src/services/activityReports.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/services/activityReports.js b/src/services/activityReports.js index 1de068ba45..206c5ef361 100644 --- a/src/services/activityReports.js +++ b/src/services/activityReports.js @@ -429,9 +429,6 @@ export function activityReportAlerts(userId) { { status: { [Op.ne]: REPORT_STATUSES.APPROVED }, }, - { - status: { [Op.ne]: REPORT_STATUSES.SUBMITTED }, - }, ], }, { From 2c6e28b5b9ed54487213ae3c45e3a7fa8eab2c41 Mon Sep 17 00:00:00 2001 From: Josh Salisbury Date: Fri, 12 Mar 2021 16:57:41 -0600 Subject: [PATCH 3/3] Update activity report count in tests --- src/services/activityReports.test.js | 30 ++++++++++------------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/services/activityReports.test.js b/src/services/activityReports.test.js index 2e0d7ae1c7..9934c31344 100644 --- a/src/services/activityReports.test.js +++ b/src/services/activityReports.test.js @@ -27,6 +27,14 @@ const mockUser = { hsesUserId: '1000', }; +const mockUserTwo = { + id: 1002, + homeRegionId: 1, + name: 'a user', + hsesUserId: 50, + hsesUsername: 'Rex', +}; + const reportObject = { activityRecipientType: 'grantee', status: REPORT_STATUSES.DRAFT, @@ -73,7 +81,7 @@ describe('Activity Reports DB service', () => { await NextStep.destroy({ where: {} }); await ActivityRecipient.destroy({ where: {} }); await ActivityReport.destroy({ where: {} }); - await User.destroy({ where: { id: mockUser.id } }); + await User.destroy({ where: { id: [mockUser.id, mockUserTwo.id] } }); await NonGrantee.destroy({ where: { id: RECIPIENT_ID } }); await Grant.destroy({ where: { id: [RECIPIENT_ID, GRANTEE_ID] } }); await Grantee.destroy({ where: { id: [RECIPIENT_ID, GRANTEE_ID] } }); @@ -296,14 +304,6 @@ describe('Activity Reports DB service', () => { let latestReport; let firstGrant; - const mockUserTwo = { - id: 1002, - homeRegionId: 1, - name: 'a user', - hsesUsername: 'user', - hsesUserId: '1002', - }; - beforeAll(async () => { const topicsOne = ['topic d', 'topic c']; const topicsTwo = ['topic b', 'topic a']; @@ -412,14 +412,6 @@ describe('Activity Reports DB service', () => { }); it('retrieves myalerts', async () => { - const mockUserTwo = { - id: 1002, - homeRegionId: 1, - name: 'a user', - hsesUserId: 50, - hsesUsername: 'Rex', - }; - await User.findOrCreate({ where: { id: mockUserTwo.id, @@ -430,8 +422,8 @@ describe('Activity Reports DB service', () => { await ActivityReport.create(reportObject); const { count, rows } = await activityReportAlerts(mockUserTwo.id, {}); - expect(count).toBe(7); - expect(rows.length).toBe(7); + expect(count).toBe(5); + expect(rows.length).toBe(5); expect(rows[0].userId).toBe(mockUserTwo.id); }); });