index.spec.jsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import {disablePlugin, enablePlugin, fetchPlugins} from 'app/actionCreators/plugins';
  3. import ProjectPlugins from 'app/views/settings/projectPlugins';
  4. jest.mock('app/actionCreators/plugins', () => ({
  5. fetchPlugins: jest.fn().mockResolvedValue([]),
  6. enablePlugin: jest.fn(),
  7. disablePlugin: jest.fn(),
  8. }));
  9. describe('ProjectPluginsContainer', function () {
  10. let org, project, plugins, wrapper, params, organization;
  11. const routerContext = TestStubs.routerContext();
  12. beforeEach(function () {
  13. org = TestStubs.Organization();
  14. project = TestStubs.Project();
  15. plugins = TestStubs.Plugins();
  16. params = {
  17. orgId: org.slug,
  18. projectId: project.slug,
  19. };
  20. organization = {
  21. id: org.slug,
  22. features: [],
  23. };
  24. MockApiClient.addMockResponse({
  25. url: `/organizations/${org.slug}/`,
  26. method: 'GET',
  27. body: org,
  28. });
  29. MockApiClient.addMockResponse({
  30. url: `/organizations/${org.slug}/integrations/`,
  31. method: 'GET',
  32. body: [],
  33. });
  34. MockApiClient.addMockResponse({
  35. url: `/projects/${org.slug}/${project.slug}/plugins/`,
  36. method: 'GET',
  37. body: plugins,
  38. });
  39. MockApiClient.addMockResponse({
  40. url: `/projects/${org.slug}/${project.slug}/plugins/amazon-sqs/`,
  41. method: 'POST',
  42. });
  43. MockApiClient.addMockResponse({
  44. url: `/projects/${org.slug}/${project.slug}/plugins/github/`,
  45. method: 'DELETE',
  46. });
  47. wrapper = mountWithTheme(
  48. <ProjectPlugins params={params} organization={organization} />,
  49. routerContext
  50. );
  51. });
  52. it('calls `fetchPlugins` action creator after mount', function () {
  53. expect(fetchPlugins).toHaveBeenCalled();
  54. });
  55. it('calls `enablePlugin` action creator when enabling plugin', function () {
  56. const onChange = wrapper.find('ProjectPlugins').prop('onChange');
  57. expect(enablePlugin).not.toHaveBeenCalled();
  58. onChange('pluginId', true);
  59. expect(enablePlugin).toHaveBeenCalled();
  60. });
  61. it('calls `disablePlugin` action creator when disabling plugin', function () {
  62. const onChange = wrapper.find('ProjectPlugins').prop('onChange');
  63. expect(disablePlugin).not.toHaveBeenCalled();
  64. onChange('pluginId', false);
  65. expect(disablePlugin).toHaveBeenCalled();
  66. });
  67. });