index.spec.jsx 2.1 KB

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