useResultsMode.spec.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // biome-ignore lint/nursery/noRestrictedImports: Will be removed with react router 6
  2. import {createMemoryHistory, Route, Router, RouterContext} from 'react-router';
  3. import {OrganizationFixture} from 'sentry-fixture/organization';
  4. import {act, render} from 'sentry-test/reactTestingLibrary';
  5. import {useGroupBys} from 'sentry/views/explore/hooks/useGroupBys';
  6. import {useResultMode} from 'sentry/views/explore/hooks/useResultsMode';
  7. import {useSampleFields} from 'sentry/views/explore/hooks/useSampleFields';
  8. import {RouteContext} from 'sentry/views/routeContext';
  9. import {SpanTagsProvider} from '../contexts/spanTagsContext';
  10. describe('useResultMode', function () {
  11. it('allows changing results mode', function () {
  12. let resultMode, setResultMode;
  13. let sampleFields;
  14. let setGroupBys;
  15. const organization = OrganizationFixture();
  16. MockApiClient.addMockResponse({
  17. url: `/organizations/${organization.slug}/spans/fields/`,
  18. method: 'GET',
  19. body: [],
  20. });
  21. function TestPage() {
  22. [sampleFields] = useSampleFields();
  23. ({setGroupBys} = useGroupBys());
  24. [resultMode, setResultMode] = useResultMode();
  25. return null;
  26. }
  27. const memoryHistory = createMemoryHistory();
  28. render(
  29. <SpanTagsProvider>
  30. <Router
  31. history={memoryHistory}
  32. render={props => {
  33. return (
  34. <RouteContext.Provider value={props}>
  35. <RouterContext {...props} />
  36. </RouteContext.Provider>
  37. );
  38. }}
  39. >
  40. <Route path="/" component={TestPage} />
  41. </Router>
  42. </SpanTagsProvider>
  43. );
  44. expect(resultMode).toEqual('samples'); // default
  45. expect(sampleFields).toEqual([
  46. 'project',
  47. 'id',
  48. 'span.op',
  49. 'span.description',
  50. 'span.duration',
  51. 'timestamp',
  52. ]); // default
  53. act(() => setResultMode('aggregate'));
  54. expect(resultMode).toEqual('aggregate');
  55. act(() => setGroupBys(['release', '']));
  56. act(() => setResultMode('samples'));
  57. expect(resultMode).toEqual('samples');
  58. expect(sampleFields).toEqual([
  59. 'project',
  60. 'id',
  61. 'span.op',
  62. 'span.description',
  63. 'span.duration',
  64. 'timestamp',
  65. ]);
  66. });
  67. });