From 8f0cc3f39ae72327bd4c93ccfe3121b9e7df875b Mon Sep 17 00:00:00 2001 From: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Date: Sat, 9 May 2026 15:28:42 -0700 Subject: [PATCH] [Testing] Improve coverage for normalizeTeamUsage (#1415) --- .../services/api/__tests__/creditsApi.test.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/app/src/services/api/__tests__/creditsApi.test.ts b/app/src/services/api/__tests__/creditsApi.test.ts index 838c377b0..5c71f0cb5 100644 --- a/app/src/services/api/__tests__/creditsApi.test.ts +++ b/app/src/services/api/__tests__/creditsApi.test.ts @@ -351,6 +351,40 @@ describe('normalizeTeamUsage', () => { expect(typeof result.cycleEndsAt).toBe('string'); }); + it('maps bypassRateLimit to bypassCycleLimit', () => { + const result = normalizeTeamUsage({ bypassRateLimit: true }); + expect(result.bypassCycleLimit).toBe(true); + }); + + it('handles invalid payload types gracefully', () => { + expect(() => normalizeTeamUsage('string payload')).not.toThrow(); + expect(() => normalizeTeamUsage(12345)).not.toThrow(); + expect(() => normalizeTeamUsage(true)).not.toThrow(); + expect(() => normalizeTeamUsage([])).not.toThrow(); + + const stringResult = normalizeTeamUsage('string payload'); + expect(stringResult.remainingUsd).toBe(0); + + const arrayResult = normalizeTeamUsage(['a', 'b']); + // Arrays pass typeof object check but don't have the expected properties + expect(arrayResult.remainingUsd).toBe(0); + }); + + it('falls back to current time for invalid date fields', () => { + vi.useFakeTimers(); + vi.setSystemTime(new Date('2026-05-10T12:00:00.000Z')); + + const result = normalizeTeamUsage({ + cycleStartDate: 12345, // invalid type + cycleEndsAt: null, // invalid type + }); + + expect(result.cycleStartDate).toBe('2026-05-10T12:00:00.000Z'); + expect(result.cycleEndsAt).toBe('2026-05-10T12:00:00.000Z'); + + vi.useRealTimers(); + }); + it('does not crash on null or undefined input', () => { expect(() => normalizeTeamUsage(null)).not.toThrow(); expect(() => normalizeTeamUsage(undefined)).not.toThrow();