datasetSelector.spec.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {OrganizationFixture} from 'sentry-fixture/organization';
  2. import {RouterFixture} from 'sentry-fixture/routerFixture';
  3. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  4. import {useNavigate} from 'sentry/utils/useNavigate';
  5. import DatasetSelector from 'sentry/views/dashboards/widgetBuilder/components/datasetSelector';
  6. import {WidgetBuilderProvider} from 'sentry/views/dashboards/widgetBuilder/contexts/widgetBuilderContext';
  7. jest.mock('sentry/utils/useNavigate', () => ({
  8. useNavigate: jest.fn(),
  9. }));
  10. const mockUseNavigate = jest.mocked(useNavigate);
  11. describe('DatasetSelector', function () {
  12. let router!: ReturnType<typeof RouterFixture>;
  13. let organization!: ReturnType<typeof OrganizationFixture>;
  14. beforeEach(function () {
  15. router = RouterFixture();
  16. organization = OrganizationFixture({});
  17. });
  18. it('changes the dataset', async function () {
  19. const mockNavigate = jest.fn();
  20. mockUseNavigate.mockReturnValue(mockNavigate);
  21. render(
  22. <WidgetBuilderProvider>
  23. <DatasetSelector />
  24. </WidgetBuilderProvider>,
  25. {
  26. router,
  27. organization,
  28. }
  29. );
  30. await userEvent.click(await screen.findByLabelText('Issues'));
  31. expect(mockNavigate).toHaveBeenCalledWith(
  32. expect.objectContaining({
  33. ...router.location,
  34. query: expect.objectContaining({dataset: 'issue'}),
  35. })
  36. );
  37. });
  38. });