chartFooter.spec.tsx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import {initializeOrg} from 'sentry-test/initializeOrg';
  3. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  4. import {t} from 'sentry/locale';
  5. import {DisplayModes} from 'sentry/utils/discover/types';
  6. import ChartFooter from 'sentry/views/eventsV2/chartFooter';
  7. describe('EventsV2 > ChartFooter', function () {
  8. const features = ['discover-basic'];
  9. const yAxisValue = ['count()', 'failure_count()'];
  10. const yAxisOptions = [
  11. {label: 'count()', value: 'count()'},
  12. {label: 'failure_count()', value: 'failure_count()'},
  13. ];
  14. afterEach(function () {});
  15. it('renders yAxis option using OptionCheckboxSelector using entire yAxisValue', async function () {
  16. const organization = TestStubs.Organization({
  17. features: [...features],
  18. });
  19. // Start off with an invalid view (empty is invalid)
  20. const initialData = initializeOrg({
  21. organization,
  22. router: {
  23. location: {query: {query: 'tag:value'}},
  24. },
  25. project: 1,
  26. projects: [],
  27. });
  28. const wrapper = mountWithTheme(
  29. <ChartFooter
  30. organization={organization}
  31. total={100}
  32. yAxisValue={yAxisValue}
  33. yAxisOptions={yAxisOptions}
  34. onAxisChange={() => undefined}
  35. displayMode={DisplayModes.DEFAULT}
  36. displayOptions={[{label: DisplayModes.DEFAULT, value: DisplayModes.DEFAULT}]}
  37. onDisplayChange={() => undefined}
  38. onTopEventsChange={() => undefined}
  39. topEvents="5"
  40. />,
  41. initialData.routerContext
  42. );
  43. await tick();
  44. wrapper.update();
  45. const optionCheckboxSelector = wrapper.find('OptionSelector').last();
  46. expect(optionCheckboxSelector.props().title).toEqual(t('Y-Axis'));
  47. expect(optionCheckboxSelector.props().selected).toEqual(yAxisValue);
  48. });
  49. it('renders display limits with default limit when top 5 mode is selected', async function () {
  50. const organization = TestStubs.Organization({
  51. features,
  52. });
  53. // Start off with an invalid view (empty is invalid)
  54. const initialData = initializeOrg({
  55. organization,
  56. router: {
  57. location: {query: {query: 'tag:value'}},
  58. },
  59. project: 1,
  60. projects: [],
  61. });
  62. const wrapper = mountWithTheme(
  63. <ChartFooter
  64. organization={organization}
  65. total={100}
  66. yAxisValue={yAxisValue}
  67. yAxisOptions={yAxisOptions}
  68. onAxisChange={() => undefined}
  69. displayMode={DisplayModes.TOP5}
  70. displayOptions={[{label: DisplayModes.DEFAULT, value: DisplayModes.DEFAULT}]}
  71. onDisplayChange={() => undefined}
  72. onTopEventsChange={() => undefined}
  73. topEvents="5"
  74. />,
  75. initialData.routerContext
  76. );
  77. await tick();
  78. wrapper.update();
  79. const optionSelector = wrapper.find('OptionSelector[title="Limit"]');
  80. expect(optionSelector.props().selected).toEqual('5');
  81. });
  82. it('renders single value y-axis dropdown selector on a Top display', function () {
  83. const organization = TestStubs.Organization({
  84. features,
  85. });
  86. let yAxis = ['count()'];
  87. render(
  88. <ChartFooter
  89. organization={organization}
  90. total={100}
  91. yAxisValue={yAxis}
  92. yAxisOptions={yAxisOptions}
  93. onAxisChange={newYAxis => (yAxis = newYAxis)}
  94. displayMode={DisplayModes.TOP5}
  95. displayOptions={[{label: DisplayModes.TOP5, value: DisplayModes.TOP5}]}
  96. onDisplayChange={() => undefined}
  97. onTopEventsChange={() => undefined}
  98. topEvents="5"
  99. />
  100. );
  101. userEvent.click(screen.getByText('count()'));
  102. userEvent.click(screen.getByText('failure_count()'));
  103. expect(yAxis).toEqual(['failure_count()']);
  104. });
  105. it('renders multi value y-axis dropdown selector on a non-Top display', function () {
  106. const organization = TestStubs.Organization({
  107. features,
  108. });
  109. let yAxis = ['count()'];
  110. render(
  111. <ChartFooter
  112. organization={organization}
  113. total={100}
  114. yAxisValue={yAxis}
  115. yAxisOptions={yAxisOptions}
  116. onAxisChange={newYAxis => (yAxis = newYAxis)}
  117. displayMode={DisplayModes.DEFAULT}
  118. displayOptions={[{label: DisplayModes.DEFAULT, value: DisplayModes.DEFAULT}]}
  119. onDisplayChange={() => undefined}
  120. onTopEventsChange={() => undefined}
  121. topEvents="5"
  122. />
  123. );
  124. userEvent.click(screen.getByText('count()'));
  125. userEvent.click(screen.getByText('failure_count()'));
  126. expect(yAxis).toEqual(['count()', 'failure_count()']);
  127. });
  128. });