permissionsObserver.spec.jsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import Form from 'sentry/components/forms/form';
  3. import PermissionsObserver from 'sentry/views/settings/organizationDeveloperSettings/permissionsObserver';
  4. describe('PermissionsObserver', () => {
  5. let wrapper;
  6. beforeEach(() => {
  7. wrapper = mountWithTheme(
  8. <Form>
  9. <PermissionsObserver
  10. scopes={['project:read', 'project:write', 'project:releases', 'org:admin']}
  11. events={['issue']}
  12. />
  13. </Form>
  14. );
  15. });
  16. it('defaults to no-access for all resources not passed', () => {
  17. const instance = wrapper.find('PermissionsObserver').instance();
  18. expect(instance.state.permissions).toEqual(
  19. expect.objectContaining({
  20. Team: 'no-access',
  21. Event: 'no-access',
  22. Member: 'no-access',
  23. })
  24. );
  25. });
  26. it('converts a raw list of scopes into permissions', () => {
  27. const instance = wrapper.find('PermissionsObserver').instance();
  28. expect(instance.state.permissions).toEqual(
  29. expect.objectContaining({
  30. Project: 'write',
  31. Release: 'admin',
  32. Organization: 'admin',
  33. })
  34. );
  35. });
  36. it('selects the highest ranking scope to convert to permission', () => {
  37. const instance = wrapper.find('PermissionsObserver').instance();
  38. expect(instance.state.permissions.Project).toEqual('write');
  39. });
  40. });