import {Project as ProjectFixture} from 'sentry-fixture/project';
import {Team} from 'sentry-fixture/team';
import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import ProjectTeamAccess from 'sentry/views/projectDetail/projectTeamAccess';
describe('ProjectDetail > ProjectTeamAccess', function () {
const {organization, routerContext} = initializeOrg();
it('renders a list', function () {
render(
,
{context: routerContext}
);
expect(screen.getByText('Team Access')).toBeInTheDocument();
expect(screen.getByText('#team-slug')).toBeInTheDocument();
});
it('links to a team settings', function () {
render(
,
{context: routerContext}
);
expect(screen.getByRole('link', {name: '#team-slug'})).toHaveAttribute(
'href',
'/settings/org-slug/teams/team-slug/'
);
});
it('display the right empty state with access', function () {
render(, {
context: routerContext,
});
expect(screen.getByRole('button', {name: 'Assign Team'})).toHaveAttribute(
'href',
'/settings/org-slug/projects/project-slug/teams/'
);
});
it('display the right empty state without access', function () {
render(
,
{context: routerContext}
);
expect(screen.getByRole('button', {name: 'Assign Team'})).toBeDisabled();
});
it('collapses more than 5 teams', async function () {
render(
,
{context: routerContext}
);
expect(screen.getAllByTestId('badge-display-name')).toHaveLength(5);
await userEvent.click(screen.getByRole('button', {name: 'Show 2 collapsed teams'}));
expect(screen.getAllByTestId('badge-display-name')).toHaveLength(7);
await userEvent.click(screen.getByRole('button', {name: 'Collapse'}));
expect(screen.getAllByTestId('badge-display-name')).toHaveLength(5);
});
it('sorts teams alphabetically', function () {
render(
,
{context: routerContext}
);
const badges = screen.getAllByTestId('badge-display-name');
expect(badges[0]).toHaveTextContent('#a');
expect(badges[1]).toHaveTextContent('#c');
expect(badges[2]).toHaveTextContent('#z');
});
});