TimePicker.test.tsx 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import sinon from 'sinon';
  4. import * as rangeUtil from 'app/core/utils/rangeutil';
  5. import TimePicker, { DEFAULT_RANGE, parseTime } from './TimePicker';
  6. describe('<TimePicker />', () => {
  7. it('renders closed with default values', () => {
  8. const rangeString = rangeUtil.describeTimeRange(DEFAULT_RANGE);
  9. const wrapper = shallow(<TimePicker />);
  10. expect(wrapper.find('.timepicker-rangestring').text()).toBe(rangeString);
  11. expect(wrapper.find('.gf-timepicker-dropdown').exists()).toBe(false);
  12. });
  13. it('renders with relative range', () => {
  14. const range = {
  15. from: 'now-7h',
  16. to: 'now',
  17. };
  18. const rangeString = rangeUtil.describeTimeRange(range);
  19. const wrapper = shallow(<TimePicker range={range} isOpen />);
  20. expect(wrapper.find('.timepicker-rangestring').text()).toBe(rangeString);
  21. expect(wrapper.state('fromRaw')).toBe(range.from);
  22. expect(wrapper.state('toRaw')).toBe(range.to);
  23. expect(wrapper.find('.timepicker-from').props().value).toBe(range.from);
  24. expect(wrapper.find('.timepicker-to').props().value).toBe(range.to);
  25. });
  26. it('renders with epoch (millies) range converted to ISO-ish', () => {
  27. const range = {
  28. from: '1',
  29. to: '1000',
  30. };
  31. const rangeString = rangeUtil.describeTimeRange({
  32. from: parseTime(range.from, true),
  33. to: parseTime(range.to, true),
  34. });
  35. const wrapper = shallow(<TimePicker range={range} isUtc isOpen />);
  36. expect(wrapper.state('fromRaw')).toBe('1970-01-01 00:00:00');
  37. expect(wrapper.state('toRaw')).toBe('1970-01-01 00:00:01');
  38. expect(wrapper.find('.timepicker-rangestring').text()).toBe(rangeString);
  39. expect(wrapper.find('.timepicker-from').props().value).toBe('1970-01-01 00:00:00');
  40. expect(wrapper.find('.timepicker-to').props().value).toBe('1970-01-01 00:00:01');
  41. });
  42. it('moves ranges forward and backward by half the range on arrow click', () => {
  43. const range = {
  44. from: '2000',
  45. to: '4000',
  46. };
  47. const rangeString = rangeUtil.describeTimeRange({
  48. from: parseTime(range.from, true),
  49. to: parseTime(range.to, true),
  50. });
  51. const onChangeTime = sinon.spy();
  52. const wrapper = shallow(<TimePicker range={range} isUtc isOpen onChangeTime={onChangeTime} />);
  53. expect(wrapper.state('fromRaw')).toBe('1970-01-01 00:00:02');
  54. expect(wrapper.state('toRaw')).toBe('1970-01-01 00:00:04');
  55. expect(wrapper.find('.timepicker-rangestring').text()).toBe(rangeString);
  56. expect(wrapper.find('.timepicker-from').props().value).toBe('1970-01-01 00:00:02');
  57. expect(wrapper.find('.timepicker-to').props().value).toBe('1970-01-01 00:00:04');
  58. wrapper.find('.timepicker-left').simulate('click');
  59. expect(onChangeTime.calledOnce).toBe(true);
  60. expect(wrapper.state('fromRaw')).toBe('1970-01-01 00:00:01');
  61. expect(wrapper.state('toRaw')).toBe('1970-01-01 00:00:03');
  62. wrapper.find('.timepicker-right').simulate('click');
  63. expect(wrapper.state('fromRaw')).toBe('1970-01-01 00:00:02');
  64. expect(wrapper.state('toRaw')).toBe('1970-01-01 00:00:04');
  65. });
  66. });