groupBySelector.spec.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import {OrganizationFixture} from 'sentry-fixture/organization';
  2. import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary';
  3. import {DiscoverDatasets} from 'sentry/utils/discover/types';
  4. import WidgetBuilderGroupBySelector from 'sentry/views/dashboards/widgetBuilder/components/groupBySelector';
  5. import {WidgetBuilderProvider} from 'sentry/views/dashboards/widgetBuilder/contexts/widgetBuilderContext';
  6. import {SpanTagsProvider} from 'sentry/views/explore/contexts/spanTagsContext';
  7. const organization = OrganizationFixture({
  8. features: ['dashboards-widget-builder-redesign'],
  9. });
  10. describe('WidgetBuilderGroupBySelector', function () {
  11. beforeEach(function () {
  12. MockApiClient.addMockResponse({
  13. url: '/organizations/org-slug/spans/fields/',
  14. body: [],
  15. });
  16. });
  17. it('renders', async function () {
  18. render(
  19. <WidgetBuilderProvider>
  20. <SpanTagsProvider dataset={DiscoverDatasets.SPANS_EAP} enabled>
  21. <WidgetBuilderGroupBySelector validatedWidgetResponse={{} as any} />
  22. </SpanTagsProvider>
  23. </WidgetBuilderProvider>,
  24. {
  25. organization,
  26. }
  27. );
  28. expect(await screen.findByText('Group by')).toBeInTheDocument();
  29. expect(await screen.findByText('Select group')).toBeInTheDocument();
  30. expect(await screen.findByText('+ Add Group')).toBeInTheDocument();
  31. });
  32. it('renders the group by field and can function', async function () {
  33. render(
  34. <WidgetBuilderProvider>
  35. <SpanTagsProvider dataset={DiscoverDatasets.SPANS_EAP} enabled>
  36. <WidgetBuilderGroupBySelector validatedWidgetResponse={{} as any} />
  37. </SpanTagsProvider>
  38. </WidgetBuilderProvider>,
  39. {
  40. organization,
  41. }
  42. );
  43. expect(await screen.findByText('Group by')).toBeInTheDocument();
  44. expect(await screen.findByText('Select group')).toBeInTheDocument();
  45. expect(await screen.findByText('+ Add Group')).toBeInTheDocument();
  46. await userEvent.click(await screen.findByText('Select group'));
  47. await userEvent.click(await screen.findByText('timestamp'));
  48. await userEvent.click(await screen.findByText('+ Add Group'));
  49. await userEvent.click(await screen.findByText('Select group'));
  50. await userEvent.click(await screen.findByText('id'));
  51. expect(await screen.findAllByLabelText('Remove group')).toHaveLength(2);
  52. await userEvent.click((await screen.findAllByLabelText('Remove group'))[0]!);
  53. expect(await screen.findByText('id')).toBeInTheDocument();
  54. await waitFor(() => {
  55. expect(screen.queryByText('timestamp')).not.toBeInTheDocument();
  56. });
  57. });
  58. });