logsDateRange.test.ts86 lines · main
| 1 | import dayjs from 'dayjs' |
| 2 | import { describe, expect, it, vi } from 'vitest' |
| 3 | |
| 4 | import { |
| 5 | EXPLORER_DATEPICKER_HELPERS, |
| 6 | getDefaultHelper, |
| 7 | } from '@/components/interfaces/Settings/Logs/Logs.constants' |
| 8 | import { |
| 9 | buildLogQueryParams, |
| 10 | resolveLogDateRange, |
| 11 | } from '@/components/interfaces/Settings/Logs/logsDateRange' |
| 12 | |
| 13 | const lastHourHelper = getDefaultHelper(EXPLORER_DATEPICKER_HELPERS) |
| 14 | |
| 15 | describe('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 | |
| 60 | describe('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 | }) |