mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #14842 from grafana/time-overrides-test
Panel time override tests
This commit is contained in:
commit
10bbb32d00
@ -64,6 +64,7 @@
|
|||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
"husky": "^0.14.3",
|
"husky": "^0.14.3",
|
||||||
"jest": "^23.6.0",
|
"jest": "^23.6.0",
|
||||||
|
"jest-date-mock": "^1.0.6",
|
||||||
"lint-staged": "^6.0.0",
|
"lint-staged": "^6.0.0",
|
||||||
"load-grunt-tasks": "3.5.2",
|
"load-grunt-tasks": "3.5.2",
|
||||||
"mini-css-extract-plugin": "^0.4.0",
|
"mini-css-extract-plugin": "^0.4.0",
|
||||||
|
74
public/app/features/dashboard/utils/panel.test.ts
Normal file
74
public/app/features/dashboard/utils/panel.test.ts
Normal file
@ -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());
|
||||||
|
});
|
||||||
|
});
|
@ -142,10 +142,16 @@ export function applyPanelTimeOverrides(panel: PanelModel, timeRange: TimeRange)
|
|||||||
|
|
||||||
const timeShift = '-' + timeShiftInterpolated;
|
const timeShift = '-' + timeShiftInterpolated;
|
||||||
newTimeData.timeInfo += ' timeshift ' + timeShift;
|
newTimeData.timeInfo += ' timeshift ' + timeShift;
|
||||||
|
const from = dateMath.parseDateMath(timeShift, newTimeData.timeRange.from, false);
|
||||||
|
const to = dateMath.parseDateMath(timeShift, newTimeData.timeRange.to, true);
|
||||||
|
|
||||||
newTimeData.timeRange = {
|
newTimeData.timeRange = {
|
||||||
from: dateMath.parseDateMath(timeShift, newTimeData.timeRange.from, false),
|
from,
|
||||||
to: dateMath.parseDateMath(timeShift, newTimeData.timeRange.to, true),
|
to,
|
||||||
raw: newTimeData.timeRange.raw,
|
raw: {
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8153,6 +8153,11 @@ jest-config@^23.6.0:
|
|||||||
micromatch "^2.3.11"
|
micromatch "^2.3.11"
|
||||||
pretty-format "^23.6.0"
|
pretty-format "^23.6.0"
|
||||||
|
|
||||||
|
jest-date-mock@^1.0.6:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-date-mock/-/jest-date-mock-1.0.6.tgz#7ea405d1fa68f86bb727d12e47b9c5e6760066a6"
|
||||||
|
integrity sha512-wnLgDaK3i2md/cQ1wKx/+/78PieO4nkGen8avEmHd4dt1NGGxeuW8/oLAF5qsatQBXdn08pxpqRtUoDvTTLdRg==
|
||||||
|
|
||||||
jest-diff@^23.6.0:
|
jest-diff@^23.6.0:
|
||||||
version "23.6.0"
|
version "23.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d"
|
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d"
|
||||||
|
Loading…
Reference in New Issue
Block a user