import {Modal} from 'react-bootstrap'; import React from 'react'; import {mount} from 'enzyme'; import SentryAppPermissionsModal from 'app/components/modals/sentryAppPermissionsModal'; describe('SentryAppPermissionsModal', function() { const org = TestStubs.Organization(); const routerContext = TestStubs.routerContext(); it('renders permissions modal', function() { const onInstall = jest.fn(); const onClose = jest.fn(); const sentryApp = TestStubs.SentryApp(); const wrapper = mount( , routerContext ); expect(wrapper).toMatchSnapshot(); wrapper .find('Button') .last() .simulate('click'); expect(onClose).toHaveBeenCalled(); }); describe('displays resources that the Sentry App has access to', function() { it('matches resource with highest level', function() { const onInstall = jest.fn(); const onClose = jest.fn(); const scopes = [ 'project:read', 'project:write', 'member:read', 'team:write', 'team:admin', 'org:admin', ]; const sentryApp = TestStubs.SentryApp({scopes}); const wrapper = mount( , routerContext ); expect( wrapper .find('PanelItem') .first() .text() ).toEqual('Read access to Member'); expect( wrapper .find('PanelItem') .at(1) .text() ).toEqual('Read and write access to Project'); expect( wrapper .find('PanelItem') .at(2) .text() ).toEqual('Admin access to Team, Organization'); }); it('matches releases with admin', function() { const onInstall = jest.fn(); const onClose = jest.fn(); const sentryApp = TestStubs.SentryApp({scopes: ['project:releases']}); const wrapper = mount( , routerContext ); expect(wrapper.find('PanelItem').text()).toEqual('Admin access to Release'); }); }); it('installs the application', function() { const onInstall = jest.fn(); const onClose = jest.fn(); const sentryApp = TestStubs.SentryApp(); const wrapper = mount( , routerContext ); expect(wrapper).toMatchSnapshot(); wrapper .find('Button') .first() .simulate('click'); expect(onInstall).toHaveBeenCalled(); }); });