Files
supabase/apps/studio/tests/unit/logs/logsDateRange.test.ts

87 lines
2.3 KiB
TypeScript

import dayjs from 'dayjs'
import { describe, expect, it, vi } from 'vitest'
import {
EXPLORER_DATEPICKER_HELPERS,
getDefaultHelper,
} from '@/components/interfaces/Settings/Logs/Logs.constants'
import {
buildLogQueryParams,
resolveLogDateRange,
} from '@/components/interfaces/Settings/Logs/logsDateRange'
const lastHourHelper = getDefaultHelper(EXPLORER_DATEPICKER_HELPERS)
describe('resolveLogDateRange', () => {
it('recomputes helper ranges up to current time', () => {
vi.useFakeTimers()
const firstNow = new Date('2025-01-01T12:00:00.000Z')
vi.setSystemTime(firstNow)
const first = resolveLogDateRange({
from: '',
to: '',
isHelper: true,
text: lastHourHelper.text,
})
expect(first.to).toBe(dayjs(firstNow).toISOString())
expect(first.from).toBe(dayjs(firstNow).subtract(1, 'hour').toISOString())
const later = new Date('2025-01-01T13:10:00.000Z')
vi.setSystemTime(later)
const second = resolveLogDateRange({
from: '',
to: '',
isHelper: true,
text: lastHourHelper.text,
})
expect(second.to).toBe(dayjs(later).toISOString())
expect(second.from).toBe(dayjs(later).subtract(1, 'hour').toISOString())
expect(second.from).not.toBe(first.from)
vi.useRealTimers()
})
it('uses provided range when not a helper', () => {
const range = resolveLogDateRange({
from: '2025-01-01T10:00:00.000Z',
to: '2025-01-01T11:00:00.000Z',
isHelper: false,
})
expect(range.from).toBe('2025-01-01T10:00:00.000Z')
expect(range.to).toBe('2025-01-01T11:00:00.000Z')
})
})
describe('buildLogQueryParams', () => {
it('returns sql with recomputed helper range for repeated runs', () => {
vi.useFakeTimers()
const now = new Date('2025-01-02T08:00:00.000Z')
vi.setSystemTime(now)
const first = buildLogQueryParams(
{ from: '', to: '', isHelper: true, text: lastHourHelper.text },
'select 1'
)
const later = new Date('2025-01-02T09:30:00.000Z')
vi.setSystemTime(later)
const second = buildLogQueryParams(
{ from: '', to: '', isHelper: true, text: lastHourHelper.text },
'select 1'
)
expect(first.sql).toBe('select 1')
expect(second.sql).toBe('select 1')
expect(first.from).not.toBe(second.from)
expect(second.to).toBe(dayjs(later).toISOString())
vi.useRealTimers()
})
})