76 lines
1.8 KiB
TypeScript
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')
|
|
})
|
|
})
|
|
})
|