| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import { describe, expect, it } from 'vitest'
- import { hasValidTimestamp, sortByTimestamp } from './useFillTimeseriesSorted'
- describe('hasValidTimestamp', () => {
- it('should return true when data has valid timestamp key', () => {
- const data = [{ timestamp: '2024-01-01T00:00:00Z', value: 1 }]
- expect(hasValidTimestamp(data, 'timestamp')).toBe(true)
- })
- it('should return false when data is empty', () => {
- expect(hasValidTimestamp([], 'timestamp')).toBe(false)
- })
- it('should return false when timestamp key does not exist', () => {
- const data = [{ value: 1 }]
- expect(hasValidTimestamp(data, 'timestamp')).toBe(false)
- })
- it('should work with custom timestamp key', () => {
- const data = [{ period_start: '2024-01-01T00:00:00Z', value: 1 }]
- expect(hasValidTimestamp(data, 'period_start')).toBe(true)
- })
- })
- describe('sortByTimestamp', () => {
- it('should sort data in ascending order by timestamp', () => {
- const data = [
- { timestamp: '2024-01-03T00:00:00Z', value: 3 },
- { timestamp: '2024-01-01T00:00:00Z', value: 1 },
- { timestamp: '2024-01-02T00:00:00Z', value: 2 },
- ]
- const sorted = sortByTimestamp(data, 'timestamp')
- expect(sorted[0].value).toBe(1)
- expect(sorted[1].value).toBe(2)
- expect(sorted[2].value).toBe(3)
- })
- it('should handle already sorted data', () => {
- const data = [
- { timestamp: '2024-01-01T00:00:00Z', value: 1 },
- { timestamp: '2024-01-02T00:00:00Z', value: 2 },
- ]
- const sorted = sortByTimestamp(data, 'timestamp')
- expect(sorted[0].value).toBe(1)
- expect(sorted[1].value).toBe(2)
- })
- it('should handle empty array', () => {
- const sorted = sortByTimestamp([], 'timestamp')
- expect(sorted).toEqual([])
- })
- it('should handle single item', () => {
- const data = [{ timestamp: '2024-01-01T00:00:00Z', value: 1 }]
- const sorted = sortByTimestamp(data, 'timestamp')
- expect(sorted).toEqual(data)
- })
- it('should work with custom timestamp key', () => {
- const data = [
- { period_start: '2024-01-03T00:00:00Z', value: 3 },
- { period_start: '2024-01-01T00:00:00Z', value: 1 },
- { period_start: '2024-01-02T00:00:00Z', value: 2 },
- ]
- const sorted = sortByTimestamp(data, 'period_start')
- expect(sorted[0].value).toBe(1)
- expect(sorted[1].value).toBe(2)
- expect(sorted[2].value).toBe(3)
- })
- it('should handle timestamps with different time zones', () => {
- const data = [
- { timestamp: '2024-01-01T12:00:00Z', value: 2 },
- { timestamp: '2024-01-01T00:00:00Z', value: 1 },
- { timestamp: '2024-01-01T18:00:00Z', value: 3 },
- ]
- const sorted = sortByTimestamp(data, 'timestamp')
- expect(sorted[0].value).toBe(1)
- expect(sorted[1].value).toBe(2)
- expect(sorted[2].value).toBe(3)
- })
- it('should maintain stable sort for equal timestamps', () => {
- const data = [
- { timestamp: '2024-01-01T00:00:00Z', value: 1, id: 'a' },
- { timestamp: '2024-01-01T00:00:00Z', value: 2, id: 'b' },
- { timestamp: '2024-01-01T00:00:00Z', value: 3, id: 'c' },
- ]
- const sorted = sortByTimestamp(data, 'timestamp')
- // Should maintain original order for equal timestamps
- expect(sorted[0].id).toBe('a')
- expect(sorted[1].id).toBe('b')
- expect(sorted[2].id).toBe('c')
- })
- })
|