useRecommendedSdkUpgrades.spec.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {reactHooks} from 'sentry-test/reactTestingLibrary';
  2. import ProjectsStore from 'sentry/stores/projectsStore';
  3. import {ServerSideSamplingStore} from 'sentry/stores/serverSideSamplingStore';
  4. import {useRecommendedSdkUpgrades} from 'sentry/views/settings/project/server-side-sampling/utils/useRecommendedSdkUpgrades';
  5. import {mockedSamplingSdkVersions} from '../testUtils';
  6. describe('useRecommendedSdkUpgrades', function () {
  7. it('works', function () {
  8. ProjectsStore.loadInitialData([
  9. TestStubs.Project({id: '1', slug: 'sentry'}),
  10. TestStubs.Project({id: '2', slug: 'java'}),
  11. TestStubs.Project({id: '3', slug: 'angular'}),
  12. ]);
  13. ServerSideSamplingStore.fetchSdkVersionsSuccess(mockedSamplingSdkVersions);
  14. const {result} = reactHooks.renderHook(() =>
  15. useRecommendedSdkUpgrades({orgSlug: 'org-slug', projectId: '3'})
  16. );
  17. expect(result.current.recommendedSdkUpgrades.length).toBe(2);
  18. expect(result.current.recommendedSdkUpgrades).toEqual([
  19. {
  20. latestSDKName: 'sentry.java',
  21. latestSDKVersion: '1.0.2',
  22. project: expect.objectContaining({
  23. features: [],
  24. slug: 'java',
  25. }),
  26. },
  27. {
  28. latestSDKName: 'sentry.python',
  29. latestSDKVersion: '1.0.2',
  30. project: expect.objectContaining({
  31. features: [],
  32. slug: 'sentry',
  33. }),
  34. },
  35. ]);
  36. expect(result.current.incompatibleProjects.length).toBe(1);
  37. expect(result.current.incompatibleProjects).toEqual([
  38. expect.objectContaining({
  39. features: [],
  40. slug: 'angular',
  41. }),
  42. ]);
  43. expect(result.current.isProjectIncompatible).toBe(true);
  44. expect(result.current.affectedProjects.length).toBe(3);
  45. });
  46. });