integrationOrganizationLink.spec.jsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import pick from 'lodash/pick';
  2. import {mountWithTheme} from 'sentry-test/enzyme';
  3. import {selectByValue} from 'sentry-test/select-new';
  4. import IntegrationOrganizationLink from 'sentry/views/integrationOrganizationLink';
  5. describe('IntegrationOrganizationLink', () => {
  6. let wrapper,
  7. getOrgsMock,
  8. getOrgMock,
  9. getProviderMock,
  10. getMountedComponent,
  11. org1,
  12. org1Lite,
  13. org2,
  14. org2Lite;
  15. beforeEach(() => {
  16. MockApiClient.clearMockResponses();
  17. org1 = TestStubs.Organization({
  18. slug: 'org1',
  19. name: 'Organization 1',
  20. });
  21. org2 = TestStubs.Organization({
  22. slug: 'org2',
  23. name: 'Organization 2',
  24. });
  25. org1Lite = pick(org1, ['slug', 'name', 'id']);
  26. org2Lite = pick(org2, ['slug', 'name', 'id']);
  27. getOrgsMock = MockApiClient.addMockResponse({
  28. url: '/organizations/',
  29. body: [org1Lite, org2Lite],
  30. });
  31. getMountedComponent = () =>
  32. mountWithTheme(
  33. <IntegrationOrganizationLink params={{integrationSlug: 'vercel'}} />,
  34. TestStubs.routerContext()
  35. );
  36. });
  37. it('selecting org from dropdown loads the org through the API', async () => {
  38. getOrgMock = MockApiClient.addMockResponse({
  39. url: `/organizations/${org2.slug}/`,
  40. body: org2,
  41. });
  42. getProviderMock = MockApiClient.addMockResponse({
  43. url: `/organizations/${org2.slug}/config/integrations/?provider_key=vercel`,
  44. body: {providers: [TestStubs.VercelProvider()]},
  45. });
  46. wrapper = getMountedComponent();
  47. expect(getOrgsMock).toHaveBeenCalled();
  48. expect(getOrgMock).not.toHaveBeenCalled();
  49. await tick();
  50. wrapper.update();
  51. selectByValue(wrapper, org2.slug, {control: true});
  52. await tick();
  53. wrapper.update();
  54. expect(wrapper.state('selectedOrgSlug')).toBe(org2.slug);
  55. expect(wrapper.state('organization')).toBe(org2);
  56. expect(getProviderMock).toHaveBeenCalled();
  57. expect(getOrgMock).toHaveBeenCalled();
  58. });
  59. });