import {mountWithTheme} from 'sentry-test/enzyme'; import Access from 'app/components/acl/access'; import ConfigStore from 'app/stores/configStore'; describe('Access', function () { const organization = TestStubs.Organization({ access: ['project:write', 'project:read'], }); const routerContext = TestStubs.routerContext([{organization}]); describe('as render prop', function () { const childrenMock = jest.fn().mockReturnValue(null); beforeEach(function () { childrenMock.mockClear(); }); it('has access when requireAll is false', function () { mountWithTheme( {childrenMock} , routerContext ); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: true, hasSuperuser: false, }); }); it('has access', function () { mountWithTheme( {childrenMock}, routerContext ); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: true, hasSuperuser: false, }); }); it('has no access', function () { mountWithTheme( {childrenMock}, routerContext ); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: false, hasSuperuser: false, }); }); it('calls render function when no access', function () { const noAccessRenderer = jest.fn(() => null); mountWithTheme( {childrenMock} , routerContext ); expect(childrenMock).not.toHaveBeenCalled(); expect(noAccessRenderer).toHaveBeenCalled(); }); it('can specify org from props', function () { mountWithTheme( {childrenMock} , routerContext ); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: true, hasSuperuser: false, }); }); it('handles no org/project', function () { mountWithTheme( {childrenMock}, routerContext ); expect(childrenMock).toHaveBeenCalledWith( expect.objectContaining({ hasAccess: false, hasSuperuser: false, }) ); }); it('handles no user', function () { // Regression test for the share sheet. ConfigStore.config = { user: null, }; mountWithTheme({childrenMock}, routerContext); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: true, hasSuperuser: false, }); }); it('is superuser', function () { ConfigStore.config = { user: {isSuperuser: true}, }; mountWithTheme({childrenMock}, routerContext); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: true, hasSuperuser: true, }); }); it('is not superuser', function () { ConfigStore.config = { user: {isSuperuser: false}, }; mountWithTheme({childrenMock}, routerContext); expect(childrenMock).toHaveBeenCalledWith({ hasAccess: true, hasSuperuser: false, }); }); }); describe('as React node', function () { let wrapper; it('has access', function () { wrapper = mountWithTheme(
The Child
, routerContext ); expect(wrapper.find('Access div').text()).toBe('The Child'); }); it('has superuser', function () { ConfigStore.config = { user: {isSuperuser: true}, }; wrapper = mountWithTheme(
The Child
, routerContext ); expect(wrapper.find('Access div').text()).toBe('The Child'); }); it('has no access', function () { wrapper = mountWithTheme(
The Child
, routerContext ); expect(wrapper.find('Access div')).toHaveLength(0); }); it('has no superuser', function () { ConfigStore.config = { user: {isSuperuser: false}, }; wrapper = mountWithTheme(
The Child
, routerContext ); expect(wrapper.find('Access div')).toHaveLength(0); }); }); });