grafana/public/app/features/scenes/core/SceneTimeRange.test.tsx

37 lines
1.3 KiB
TypeScript
Raw Normal View History

import { SceneTimeRange } from './SceneTimeRange';
describe('SceneTimeRange', () => {
it('when created should evaluate time range', () => {
const timeRange = new SceneTimeRange({ from: 'now-1h', to: 'now' });
expect(timeRange.state.value.raw.from).toBe('now-1h');
});
it('when time range refreshed should evaluate and update value', async () => {
const timeRange = new SceneTimeRange({ from: 'now-30s', to: 'now' });
const startTime = timeRange.state.value.from.valueOf();
await new Promise((r) => setTimeout(r, 2));
timeRange.onRefresh();
const diff = timeRange.state.value.from.valueOf() - startTime;
expect(diff).toBeGreaterThan(1);
});
it('toUrlValues with relative range', () => {
const timeRange = new SceneTimeRange({ from: 'now-1h', to: 'now' });
expect(timeRange.urlSync?.getUrlState(timeRange.state)).toEqual({
from: 'now-1h',
to: 'now',
});
});
it('updateFromUrl with ISO time', () => {
const timeRange = new SceneTimeRange({ from: 'now-1h', to: 'now' });
timeRange.urlSync?.updateFromUrl({
from: '2021-01-01T10:00:00.000Z',
to: '2021-02-03T01:20:00.000Z',
});
expect(timeRange.state.from).toEqual('2021-01-01T10:00:00.000Z');
expect(timeRange.state.value.from.valueOf()).toEqual(1609495200000);
});
});