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();
});
});