tests/chart-optimizations.unit.test.ts
Rama main · réplica de lectura del repositorio original.
import { describe, expect, it, vi } from 'vitest'
import {
filterDailySeriesToBillingPeriod,
resolveDashboardDailySeriesWindow,
} from '../src/utils/chartOptimizations'
describe('chart optimizations billing window', () => {
it('uses elapsed UTC days across month-length boundaries', () => {
vi.useFakeTimers()
vi.setSystemTime(new Date('2026-04-01T12:00:00.000Z'))
try {
const billingStart = new Date('2026-03-30T00:00:00.000Z')
const seriesStart = new Date('2026-03-03T00:00:00.000Z')
const fullData = Array.from({ length: 30 }).fill(0) as number[]
// Index for March 30, 31, April 1 relative to seriesStart (Mar 3)
fullData[27] = 1
fullData[28] = 2
fullData[29] = 3
const { data } = filterDailySeriesToBillingPeriod(fullData, seriesStart, billingStart)
expect(data).toHaveLength(3)
expect(data).toEqual([1, 2, 3])
}
finally {
vi.useRealTimers()
}
})
it.concurrent('starts billing fetch windows at the cycle anchor for 31-day cycles', () => {
const now = new Date('2026-03-31T15:00:00.000Z')
const billingStart = new Date('2026-03-01T00:00:00.000Z')
const window = resolveDashboardDailySeriesWindow(true, billingStart, now)
expect(window.seriesStart.toISOString()).toBe('2026-03-01T00:00:00.000Z')
expect(window.dayCount).toBe(31)
expect(window.exclusiveEnd.toISOString()).toBe('2026-04-01T00:00:00.000Z')
})
it.concurrent('keeps trailing 30 days when not using billing period', () => {
const now = new Date('2026-03-31T15:00:00.000Z')
const billingStart = new Date('2026-03-01T00:00:00.000Z')
const window = resolveDashboardDailySeriesWindow(false, billingStart, now)
expect(window.seriesStart.toISOString()).toBe('2026-03-02T00:00:00.000Z')
expect(window.dayCount).toBe(30)
})
})