diff --git a/common/src/util/__tests__/db-health-alerts.test.ts b/common/src/util/__tests__/db-health-alerts.test.ts index 124703f0a7..c82e33150d 100644 --- a/common/src/util/__tests__/db-health-alerts.test.ts +++ b/common/src/util/__tests__/db-health-alerts.test.ts @@ -368,3 +368,34 @@ describe('evaluateBusyBackendRank', () => { expect(evaluateBusyBackendRank([])).toEqual({ breach: false, top: null }) }) }) + +describe('evaluateStatCoverage percentage formatting', () => { + it('handles zero whole gracefully', () => { + const cov = evaluateStatCoverage( + coverageRow({ pgss_rows: 0, pgss_with_text: 0 }), + ) + expect(cov.summary).toContain('0/0') + expect(cov.summary).toContain('0%') + }) + + it('formats normal percentages correctly', () => { + const cov = evaluateStatCoverage( + coverageRow({ pgss_rows: 200, pgss_with_text: 50 }), + ) + expect(cov.summary).toContain('25%') + }) + + it('rounds percentages correctly', () => { + const cov = evaluateStatCoverage( + coverageRow({ pgss_rows: 300, pgss_with_text: 100 }), + ) + expect(cov.summary).toContain('33%') + }) + + it('handles 100% correctly', () => { + const cov = evaluateStatCoverage( + coverageRow({ pgss_rows: 100, pgss_with_text: 100 }), + ) + expect(cov.summary).toContain('100%') + }) +}) diff --git a/common/src/util/db-health-alerts.ts b/common/src/util/db-health-alerts.ts index 0c88fda3bc..451713e2ea 100644 --- a/common/src/util/db-health-alerts.ts +++ b/common/src/util/db-health-alerts.ts @@ -292,8 +292,10 @@ export function evaluateStatCoverage(row: StatCoverageRow): StatCoverage { // may break the alert that does not consult it. const statementsBlind = statementRows === 0 const activityBlind = activityVisible === 0 - const pct = (part: number, whole: number) => - whole > 0 ? Math.round((part / whole) * 100) : 0 + const pct = (part: number, whole: number) => { + if (!Number.isFinite(part) || !Number.isFinite(whole) || whole <= 0) return 0 + return Math.round((part / whole) * 100) + } const summary = row.has_read_all_stats ? `role ${row.role} has pg_read_all_stats: full fleet visibility` : `role ${row.role} lacks pg_read_all_stats — ${statementsWithText}/${statementRows} ` +