panel.test.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import moment from 'moment';
  2. import { TimeRange } from '@grafana/ui';
  3. import { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel';
  4. import { advanceTo, clear } from 'jest-date-mock';
  5. const dashboardTimeRange: TimeRange = {
  6. from: moment([2019, 1, 11, 12, 0]),
  7. to: moment([2019, 1, 11, 18, 0]),
  8. raw: {
  9. from: 'now-6h',
  10. to: 'now',
  11. },
  12. };
  13. describe('applyPanelTimeOverrides', () => {
  14. const fakeCurrentDate = moment([2019, 1, 11, 14, 0, 0]).toDate();
  15. beforeAll(() => {
  16. advanceTo(fakeCurrentDate);
  17. });
  18. afterAll(() => {
  19. clear();
  20. });
  21. it('should apply relative time override', () => {
  22. const panelModel = {
  23. timeFrom: '2h',
  24. };
  25. // @ts-ignore: PanelModel type incositency
  26. const overrides = applyPanelTimeOverrides(panelModel, dashboardTimeRange);
  27. expect(overrides.timeRange.from.toISOString()).toBe(moment([2019, 1, 11, 12]).toISOString());
  28. expect(overrides.timeRange.to.toISOString()).toBe(fakeCurrentDate.toISOString());
  29. });
  30. it('should apply time shift', () => {
  31. const panelModel = {
  32. timeShift: '2h'
  33. };
  34. const expectedFromDate = moment([2019, 1, 11, 10, 0, 0]).toDate();
  35. const expectedToDate = moment([2019, 1, 11, 16, 0, 0]).toDate();
  36. // @ts-ignore: PanelModel type incositency
  37. const overrides = applyPanelTimeOverrides(panelModel, dashboardTimeRange);
  38. expect(overrides.timeRange.from.toISOString()).toBe(expectedFromDate.toISOString());
  39. expect(overrides.timeRange.to.toISOString()).toBe(expectedToDate.toISOString());
  40. });
  41. it('should apply both relative time and time shift', () => {
  42. const panelModel = {
  43. timeFrom: '2h',
  44. timeShift: '2h'
  45. };
  46. const expectedFromDate = moment([2019, 1, 11, 10, 0, 0]).toDate();
  47. const expectedToDate = moment([2019, 1, 11, 12, 0, 0]).toDate();
  48. // @ts-ignore: PanelModel type incositency
  49. const overrides = applyPanelTimeOverrides(panelModel, dashboardTimeRange);
  50. expect(overrides.timeRange.from.toISOString()).toBe(expectedFromDate.toISOString());
  51. expect(overrides.timeRange.to.toISOString()).toBe(expectedToDate.toISOString());
  52. });
  53. });