noDataDueToOldSDKMessage.spec.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import {PageFilters} from 'sentry-fixture/pageFilters';
  2. import {Project} from 'sentry-fixture/project';
  3. import {ProjectSdkUpdates} from 'sentry-fixture/projectSdkUpdates';
  4. import {render, screen, waitFor} from 'sentry-test/reactTestingLibrary';
  5. import {textWithMarkupMatcher} from 'sentry-test/utils';
  6. import ProjectsStore from 'sentry/stores/projectsStore';
  7. import importedUsePageFilters from 'sentry/utils/usePageFilters';
  8. jest.mock('sentry/utils/usePageFilters');
  9. const usePageFilters = jest.mocked(importedUsePageFilters);
  10. import {NoDataDueToOldSDKMessage} from 'sentry/views/performance/database/noDataDueToOldSDKMessage';
  11. describe('NoDataDueToOldSDKMessage', () => {
  12. beforeEach(() => {
  13. jest.clearAllMocks();
  14. MockApiClient.clearMockResponses();
  15. usePageFilters.mockClear();
  16. ProjectsStore.loadInitialData([Project({name: 'Awesome API', slug: 'awesome-api'})]);
  17. });
  18. it('shows a list of outdated SDKs if there is no data available and SDKs are outdated', async function () {
  19. usePageFilters.mockImplementation(() => ({
  20. selection: PageFilters({projects: [2]}),
  21. isReady: true,
  22. shouldPersist: true,
  23. pinnedFilters: new Set(),
  24. desyncedFilters: new Set(),
  25. }));
  26. MockApiClient.addMockResponse({
  27. url: '/organizations/org-slug/sdk-updates/',
  28. body: [ProjectSdkUpdates({projectId: '2'})],
  29. });
  30. MockApiClient.addMockResponse({
  31. url: '/organizations/org-slug/events/',
  32. body: {
  33. data: {count: 1},
  34. },
  35. });
  36. render(<NoDataDueToOldSDKMessage />);
  37. await waitFor(() => {
  38. expect(
  39. screen.getByText(
  40. textWithMarkupMatcher('You may be missing data due to outdated SDKs.')
  41. )
  42. ).toBeInTheDocument();
  43. });
  44. expect(screen.getAllByRole('link')[1]).toHaveAttribute(
  45. 'href',
  46. '/organizations/org-slug/projects/awesome-api/'
  47. );
  48. });
  49. });