useVisualizeFields.spec.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {LocationFixture} from 'sentry-fixture/locationFixture';
  2. import {OrganizationFixture} from 'sentry-fixture/organization';
  3. import {makeTestQueryClient} from 'sentry-test/queryClient';
  4. import {renderHook} from 'sentry-test/reactTestingLibrary';
  5. import type {Organization} from 'sentry/types/organization';
  6. import {DiscoverDatasets} from 'sentry/utils/discover/types';
  7. import {QueryClientProvider} from 'sentry/utils/queryClient';
  8. import {useLocation} from 'sentry/utils/useLocation';
  9. import {PageParamsProvider} from 'sentry/views/explore/contexts/pageParamsContext';
  10. import {SpanTagsProvider} from 'sentry/views/explore/contexts/spanTagsContext';
  11. import {useVisualizeFields} from 'sentry/views/explore/hooks/useVisualizeFields';
  12. import {OrganizationContext} from 'sentry/views/organizationContext';
  13. jest.mock('sentry/utils/useLocation');
  14. const mockedUsedLocation = jest.mocked(useLocation);
  15. function createWrapper(organization: Organization) {
  16. return function ({children}: {children?: React.ReactNode}) {
  17. return (
  18. <QueryClientProvider client={makeTestQueryClient()}>
  19. <OrganizationContext.Provider value={organization}>
  20. <PageParamsProvider>
  21. <SpanTagsProvider dataset={DiscoverDatasets.SPANS_EAP} enabled>
  22. {children}
  23. </SpanTagsProvider>
  24. </PageParamsProvider>
  25. </OrganizationContext.Provider>
  26. </QueryClientProvider>
  27. );
  28. };
  29. }
  30. describe('useVisualizeFields', () => {
  31. const organization = OrganizationFixture();
  32. beforeEach(function () {
  33. MockApiClient.clearMockResponses();
  34. MockApiClient.addMockResponse({
  35. url: `/organizations/org-slug/spans/fields/`,
  36. body: [],
  37. });
  38. mockedUsedLocation.mockReturnValue(LocationFixture());
  39. });
  40. it('returns a valid list of field options', () => {
  41. const {result} = renderHook(
  42. () =>
  43. useVisualizeFields({
  44. yAxes: ['avg(span.duration)', 'avg(score.ttfb)'],
  45. }),
  46. {
  47. wrapper: createWrapper(organization),
  48. }
  49. );
  50. expect(result.current.map(field => field.value)).toEqual([
  51. 'score.ttfb',
  52. 'span.duration',
  53. 'span.self_time',
  54. ]);
  55. });
  56. });