mirror of https://github.com/grafana/grafana
Merge pull request #14842 from grafana/time-overrides-test
Panel time override testspull/14848/head
commit
10bbb32d00
@ -0,0 +1,74 @@ |
||||
import moment from 'moment'; |
||||
import { TimeRange } from '@grafana/ui'; |
||||
import { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel'; |
||||
import { advanceTo, clear } from 'jest-date-mock'; |
||||
|
||||
const dashboardTimeRange: TimeRange = { |
||||
from: moment([2019, 1, 11, 12, 0]), |
||||
to: moment([2019, 1, 11, 18, 0]), |
||||
raw: { |
||||
from: 'now-6h', |
||||
to: 'now', |
||||
}, |
||||
}; |
||||
|
||||
describe('applyPanelTimeOverrides', () => { |
||||
const fakeCurrentDate = moment([2019, 1, 11, 14, 0, 0]).toDate(); |
||||
|
||||
beforeAll(() => { |
||||
advanceTo(fakeCurrentDate); |
||||
}); |
||||
|
||||
afterAll(() => { |
||||
clear(); |
||||
}); |
||||
|
||||
it('should apply relative time override', () => { |
||||
const panelModel = { |
||||
timeFrom: '2h', |
||||
}; |
||||
|
||||
// @ts-ignore: PanelModel type incositency
|
||||
const overrides = applyPanelTimeOverrides(panelModel, dashboardTimeRange); |
||||
|
||||
expect(overrides.timeRange.from.toISOString()).toBe(moment([2019, 1, 11, 12]).toISOString()); |
||||
expect(overrides.timeRange.to.toISOString()).toBe(fakeCurrentDate.toISOString()); |
||||
expect(overrides.timeRange.raw.from).toBe('now-2h'); |
||||
expect(overrides.timeRange.raw.to).toBe('now'); |
||||
}); |
||||
|
||||
it('should apply time shift', () => { |
||||
const panelModel = { |
||||
timeShift: '2h' |
||||
}; |
||||
|
||||
const expectedFromDate = moment([2019, 1, 11, 10, 0, 0]).toDate(); |
||||
const expectedToDate = moment([2019, 1, 11, 16, 0, 0]).toDate(); |
||||
|
||||
// @ts-ignore: PanelModel type incositency
|
||||
const overrides = applyPanelTimeOverrides(panelModel, dashboardTimeRange); |
||||
|
||||
expect(overrides.timeRange.from.toISOString()).toBe(expectedFromDate.toISOString()); |
||||
expect(overrides.timeRange.to.toISOString()).toBe(expectedToDate.toISOString()); |
||||
expect((overrides.timeRange.raw.from as moment.Moment).toISOString()).toEqual(expectedFromDate.toISOString()); |
||||
expect((overrides.timeRange.raw.to as moment.Moment).toISOString()).toEqual(expectedToDate.toISOString()); |
||||
}); |
||||
|
||||
it('should apply both relative time and time shift', () => { |
||||
const panelModel = { |
||||
timeFrom: '2h', |
||||
timeShift: '2h' |
||||
}; |
||||
|
||||
const expectedFromDate = moment([2019, 1, 11, 10, 0, 0]).toDate(); |
||||
const expectedToDate = moment([2019, 1, 11, 12, 0, 0]).toDate(); |
||||
|
||||
// @ts-ignore: PanelModel type incositency
|
||||
const overrides = applyPanelTimeOverrides(panelModel, dashboardTimeRange); |
||||
|
||||
expect(overrides.timeRange.from.toISOString()).toBe(expectedFromDate.toISOString()); |
||||
expect(overrides.timeRange.to.toISOString()).toBe(expectedToDate.toISOString()); |
||||
expect((overrides.timeRange.raw.from as moment.Moment).toISOString()).toEqual(expectedFromDate.toISOString()); |
||||
expect((overrides.timeRange.raw.to as moment.Moment).toISOString()).toEqual(expectedToDate.toISOString()); |
||||
}); |
||||
}); |
Loading…
Reference in new issue