fix: restore carrier reporting status summaries
This commit is contained in:
@@ -4,10 +4,12 @@ describe('summarizeReportStatuses', () => {
|
||||
it.each([
|
||||
[[], { status: 'not_applicable', approved: 0, total: 0 }],
|
||||
[['approved', 'approved'], { status: 'approved', approved: 2, total: 2 }],
|
||||
[['abandoned', 'abandoned'], { status: 'abandoned', approved: 0, total: 2 }],
|
||||
[['failed', 'rejected'], { status: 'failed', approved: 0, total: 2 }],
|
||||
[['approved', 'failed'], { status: 'partial_success', approved: 1, total: 2 }],
|
||||
[['failed', 'pending'], { status: 'reporting', approved: 0, total: 2 }],
|
||||
[['waiting_material', 'pending'], { status: 'waiting_material', approved: 0, total: 2 }],
|
||||
[['abandoned', 'reporting'], { status: 'reporting', approved: 0, total: 2 }],
|
||||
])('summarizes %j without allowing one failure to override other targets', (statuses, expected) => {
|
||||
expect(summarizeReportStatuses(statuses)).toEqual(expected);
|
||||
});
|
||||
|
||||
@@ -11,8 +11,10 @@ export function summarizeReportStatuses(statuses: string[]): ReportStatusSummary
|
||||
|
||||
const approved = statuses.filter((status) => status === 'approved').length;
|
||||
const failed = statuses.filter((status) => FAILED_REPORT_STATUSES.has(status)).length;
|
||||
const abandoned = statuses.filter((status) => status === 'abandoned').length;
|
||||
|
||||
if (approved === statuses.length) return { status: 'approved', approved, total: statuses.length };
|
||||
if (abandoned === statuses.length) return { status: 'abandoned', approved, total: statuses.length };
|
||||
|
||||
// Overall failure means every current target failed. A single failed channel must not
|
||||
// erase successful channels or targets that can still finish reporting.
|
||||
|
||||
Reference in New Issue
Block a user