chronograf/ui/test/shared/components/TimeMachine/fluxQueryBuilder/util/timeRangeWindowPeriod.test.ts

76 lines
1.8 KiB
TypeScript

import timeRangeWindowPeriod, {
fluxPeriodFromRangeSeconds,
} from 'src/shared/components/TimeMachine/fluxQueryBuilder/util/timeRangeWindowPeriod'
import {timeRanges} from 'src/shared/data/timeRanges'
describe('fluxQueryBuilder/util/timeRangeWindowPeriod', () => {
describe('fluxPeriodFromRangeSeconds', () => {
;[
{
name: 'below 360 seconds',
seconds: 350,
expect: '1s',
},
{
name: 'unknown seconds',
seconds: undefined,
expect: '1s',
},
{
name: 'NaN',
seconds: Number.NaN,
expect: '1s',
},
{
name: '1 hour',
seconds: 3600,
expect: '10s',
},
{
name: '6 hours',
seconds: 6 * 3600,
expect: '1m',
},
{
name: '7 hours',
seconds: 7 * 3600,
expect: '1m10s',
},
{
name: '15 days',
seconds: 15 * 24 * 3600,
expect: '1h',
},
{
name: '379 days',
seconds: 379 * 24 * 3600,
expect: '1d1h16m',
},
].forEach(x => {
test(x.name || x.expect, () => {
expect(fluxPeriodFromRangeSeconds(x.seconds)).toBe(x.expect)
})
})
})
describe('timeRangeWindowPeriod', () => {
test('undefined', () => {
expect(timeRangeWindowPeriod(undefined)).toBe(undefined)
})
timeRanges.forEach(x => {
test(x.menuOption, () => {
expect(x.seconds).toBeDefined()
expect(timeRangeWindowPeriod(x)).toBe(
fluxPeriodFromRangeSeconds(x.seconds)
)
})
})
test('custom time range', () => {
expect(
timeRangeWindowPeriod({
lower: '2022-01-01T00:00:00',
upper: '2023-01-01T00:00:00',
})
).toBe('1d20m')
})
})
})