logsDateRange.test.ts86 lines · main
1import dayjs from 'dayjs'
2import { describe, expect, it, vi } from 'vitest'
3
4import {
5 EXPLORER_DATEPICKER_HELPERS,
6 getDefaultHelper,
7} from '@/components/interfaces/Settings/Logs/Logs.constants'
8import {
9 buildLogQueryParams,
10 resolveLogDateRange,
11} from '@/components/interfaces/Settings/Logs/logsDateRange'
12
13const lastHourHelper = getDefaultHelper(EXPLORER_DATEPICKER_HELPERS)
14
15describe('resolveLogDateRange', () => {
16 it('recomputes helper ranges up to current time', () => {
17 vi.useFakeTimers()
18 const firstNow = new Date('2025-01-01T12:00:00.000Z')
19 vi.setSystemTime(firstNow)
20
21 const first = resolveLogDateRange({
22 from: '',
23 to: '',
24 isHelper: true,
25 text: lastHourHelper.text,
26 })
27
28 expect(first.to).toBe(dayjs(firstNow).toISOString())
29 expect(first.from).toBe(dayjs(firstNow).subtract(1, 'hour').toISOString())
30
31 const later = new Date('2025-01-01T13:10:00.000Z')
32 vi.setSystemTime(later)
33
34 const second = resolveLogDateRange({
35 from: '',
36 to: '',
37 isHelper: true,
38 text: lastHourHelper.text,
39 })
40
41 expect(second.to).toBe(dayjs(later).toISOString())
42 expect(second.from).toBe(dayjs(later).subtract(1, 'hour').toISOString())
43 expect(second.from).not.toBe(first.from)
44
45 vi.useRealTimers()
46 })
47
48 it('uses provided range when not a helper', () => {
49 const range = resolveLogDateRange({
50 from: '2025-01-01T10:00:00.000Z',
51 to: '2025-01-01T11:00:00.000Z',
52 isHelper: false,
53 })
54
55 expect(range.from).toBe('2025-01-01T10:00:00.000Z')
56 expect(range.to).toBe('2025-01-01T11:00:00.000Z')
57 })
58})
59
60describe('buildLogQueryParams', () => {
61 it('returns sql with recomputed helper range for repeated runs', () => {
62 vi.useFakeTimers()
63 const now = new Date('2025-01-02T08:00:00.000Z')
64 vi.setSystemTime(now)
65
66 const first = buildLogQueryParams(
67 { from: '', to: '', isHelper: true, text: lastHourHelper.text },
68 'select 1'
69 )
70
71 const later = new Date('2025-01-02T09:30:00.000Z')
72 vi.setSystemTime(later)
73
74 const second = buildLogQueryParams(
75 { from: '', to: '', isHelper: true, text: lastHourHelper.text },
76 'select 1'
77 )
78
79 expect(first.sql).toBe('select 1')
80 expect(second.sql).toBe('select 1')
81 expect(first.from).not.toBe(second.from)
82 expect(second.to).toBe(dayjs(later).toISOString())
83
84 vi.useRealTimers()
85 })
86})