import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {openCreateOwnershipRule} from 'sentry/actionCreators/modal'; import OwnedBy from 'sentry/components/group/ownedBy'; import MemberListStore from 'sentry/stores/memberListStore'; import {buildTeamId, buildUserId} from 'sentry/utils'; jest.mock('sentry/actionCreators/modal'); describe('Group > OwnedBy', () => { it('renders unowned', () => { const group = TestStubs.Group(); render( ); expect(screen.getByText('No-one')).toBeInTheDocument(); }); it('renders team owner', () => { const team = TestStubs.Team(); const group = TestStubs.Group({ owners: [ { date_added: new Date(), owner: buildTeamId(team.id), type: 'codeowners', }, ], }); render( ); expect(screen.getByText(`#${team.slug}`)).toBeInTheDocument(); }); it('renders member owner', () => { const user = TestStubs.User(); MemberListStore.loadInitialData([user]); const group = TestStubs.Group({ owners: [ { date_added: new Date(), owner: buildUserId(user.id), type: 'codeowners', }, ], }); render( ); expect(screen.getByText(user.name)).toBeInTheDocument(); }); it('does not render suspect commit', () => { const user = TestStubs.User(); MemberListStore.loadInitialData([user]); const group = TestStubs.Group({ owners: [ { date_added: new Date(), owner: buildUserId(user.id), type: 'suspectCommit', }, ], }); render( ); expect(screen.getByText('No-one')).toBeInTheDocument(); }); it('allows project:write to edit owners', () => { render( ); userEvent.click(screen.getByLabelText('Create Ownership Rule')); expect(openCreateOwnershipRule).toHaveBeenCalledWith( expect.objectContaining({issueId: '1'}) ); }); });