logsDateRange.test.ts 2.3 KB

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