import {act, render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import {SwitchOrganization} from 'sentry/components/sidebar/sidebarDropdown/switchOrganization';
describe('SwitchOrganization', function () {
it('can list organizations', function () {
jest.useFakeTimers();
render(
);
userEvent.hover(screen.getByTestId('sidebar-switch-org'));
act(() => void jest.advanceTimersByTime(500));
expect(screen.getByRole('list')).toBeInTheDocument();
expect(screen.getByText('Organization 1')).toBeInTheDocument();
expect(screen.getByText('Organization 2')).toBeInTheDocument();
jest.useRealTimers();
});
it('shows "Create an Org" if they have permission', function () {
jest.useFakeTimers();
render();
userEvent.hover(screen.getByTestId('sidebar-switch-org'));
act(() => void jest.advanceTimersByTime(500));
expect(screen.getByTestId('sidebar-create-org')).toBeInTheDocument();
jest.useRealTimers();
});
it('does not have "Create an Org" if they do not have permission', function () {
jest.useFakeTimers();
render();
userEvent.hover(screen.getByTestId('sidebar-switch-org'));
act(() => void jest.advanceTimersByTime(500));
expect(screen.queryByTestId('sidebar-create-org')).not.toBeInTheDocument();
jest.useRealTimers();
});
it('shows orgs pending deletion with a special icon', function () {
const orgPendingDeletion = TestStubs.Organization({
slug: 'org-2',
status: {id: 'pending_deletion', name: 'pending_deletion'},
});
jest.useFakeTimers();
render(
);
userEvent.hover(screen.getByTestId('sidebar-switch-org'));
act(() => void jest.advanceTimersByTime(500));
expect(screen.getByTestId('pending-deletion-icon')).toBeInTheDocument();
jest.useRealTimers();
});
});