import {CodeOwnerFixture} from 'sentry-fixture/codeOwner'; import {OrganizationFixture} from 'sentry-fixture/organization'; import {ProjectFixture} from 'sentry-fixture/project'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {CodeOwnerErrors} from './codeownerErrors'; describe('CodeownerErrors', () => { const project = ProjectFixture(); const org = OrganizationFixture(); it('should render error', async () => { const codeowner = CodeOwnerFixture({ errors: { missing_user_emails: [], missing_external_users: [], missing_external_teams: ['@getsentry/something'], teams_without_access: [], users_without_access: [], }, }); render( ); await userEvent.click( screen.getByText( 'There was 1 ownership issue within Sentry on the latest sync with the CODEOWNERS file' ) ); expect( screen.getByText(`There’s a problem linking teams and members from an integration`) ).toBeInTheDocument(); expect(screen.getByText('@getsentry/something')).toBeInTheDocument(); }); it('should render errors', async () => { const codeowner = CodeOwnerFixture({ errors: { missing_user_emails: ['santry@example.com'], missing_external_users: [], missing_external_teams: ['@getsentry/something'], teams_without_access: ['#snuba'], users_without_access: [], }, }); render( ); await userEvent.click( screen.getByText( 'There were 3 ownership issues within Sentry on the latest sync with the CODEOWNERS file' ) ); expect( screen.getByText(`There’s a problem linking teams and members from an integration`) ).toBeInTheDocument(); expect(screen.getByText('@getsentry/something')).toBeInTheDocument(); }); it('should deduplicate errors', () => { const codeowner = CodeOwnerFixture({ errors: { missing_user_emails: ['santry@example.com'], missing_external_users: [], missing_external_teams: ['@getsentry/something'], teams_without_access: ['#snuba'], users_without_access: [], }, }); render( ); expect( screen.getByText( 'There were 3 ownership issues within Sentry on the latest sync with the CODEOWNERS file' ) ).toBeInTheDocument(); }); });