From c1c25b8c9bc72de979e79c24239c7febd4323911 Mon Sep 17 00:00:00 2001 From: zachery with an e <45150570+zweatshirt@users.noreply.github.com> Date: Tue, 19 May 2026 15:56:37 -0500 Subject: [PATCH] Add date sorting functionality for transactions in CSV report generation --- .../DownloadButtonGroup/downloadReport.test.tsx | 14 ++++++++++++-- .../DownloadButtonGroup/downloadReport.tsx | 9 ++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.test.tsx b/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.test.tsx index 8ee719086d..c7a186481b 100644 --- a/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.test.tsx +++ b/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.test.tsx @@ -1,7 +1,7 @@ import { StaffExpenseCategoryEnum } from 'src/graphql/types.generated'; import { ReportType } from '../Helpers/StaffReportEnum'; import { Transaction } from '../Helpers/filterTransactions'; -import { createCsvReport } from './downloadReport'; +import { createCsvReport, dateSortTransactions } from './downloadReport'; const mockData: Transaction[] = [ { @@ -9,7 +9,7 @@ const mockData: Transaction[] = [ category: StaffExpenseCategoryEnum.MinistryReimbursement, displayCategory: 'Ministry Reimbursement', fundType: 'Primary', - transactedAt: '2025-07-01', + transactedAt: '2025-10-01', amount: -2724, }, { @@ -113,4 +113,14 @@ describe('downloadReport', () => { expect(clickMock).toHaveBeenCalled(); expect(removeChildMock).toHaveBeenCalledWith(realLink); }); + + describe('dateSortTransactions', () => { + it('sorts transactions by ascending date', () => { + expect( + dateSortTransactions(mockData).map( + (transaction) => transaction.transactedAt, + ), + ).toEqual(['2025-08-01', '2025-09-01', '2025-10-01']); + }); + }); }); diff --git a/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.tsx b/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.tsx index c752b4939d..15dbdac412 100644 --- a/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.tsx +++ b/src/components/Reports/StaffExpenseReport/DownloadButtonGroup/downloadReport.tsx @@ -11,10 +11,11 @@ const createTable = ( transactions: Transaction[], locale: string, ) => { + const dateSortedTransactions = dateSortTransactions(transactions); const csvData = [ [title], csvHeader, - ...transactions.map((transaction) => [ + ...dateSortedTransactions.map((transaction) => [ dateFormat(DateTime.fromISO(transaction.transactedAt), locale), transaction.displayCategory, currencyFormat(transaction.amount, 'USD', locale), @@ -24,6 +25,12 @@ const createTable = ( return csvData; }; +export function dateSortTransactions(transactions: Transaction[]) { + return [...transactions].sort((transactionA, transactionB) => + transactionA.transactedAt.localeCompare(transactionB.transactedAt), + ); +} + function createCombinedReport( transactions: Transaction[], titles: { income: string; expense: string },