projectPluginsRow.spec.jsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import ProjectPluginRow from 'app/views/settings/projectPlugins/projectPluginRow';
  4. describe('ProjectPluginRow', function() {
  5. let wrapper;
  6. const plugin = TestStubs.Plugin();
  7. const org = TestStubs.Organization({access: ['project:write']});
  8. const project = TestStubs.Project();
  9. const params = {orgId: org.slug, projectId: project.slug};
  10. const routerContext = TestStubs.routerContext([{organization: org, project}]);
  11. it('renders', function() {
  12. wrapper = mount(<ProjectPluginRow {...params} {...plugin} />, routerContext);
  13. expect(wrapper).toMatchSnapshot();
  14. });
  15. it('calls `onChange` when clicked', function() {
  16. const onChange = jest.fn();
  17. wrapper = mount(
  18. <ProjectPluginRow {...params} {...plugin} onChange={onChange} />,
  19. routerContext
  20. );
  21. expect(onChange).not.toHaveBeenCalled();
  22. wrapper.find('Switch').simulate('click');
  23. expect(onChange).toHaveBeenCalledWith('amazon-sqs', true);
  24. });
  25. it('can not enable/disable or configure plugin without `project:write`', function() {
  26. const onChange = jest.fn();
  27. wrapper = mount(
  28. <ProjectPluginRow {...params} {...plugin} onChange={onChange} />,
  29. TestStubs.routerContext([{organization: TestStubs.Organization({access: []})}])
  30. );
  31. expect(onChange).not.toHaveBeenCalled();
  32. wrapper.find('Switch').simulate('click');
  33. expect(onChange).not.toHaveBeenCalled();
  34. });
  35. });