import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import selectEvent from 'sentry-test/selectEvent';
import ProjectsStore from 'sentry/stores/projectsStore';
import ProjectSelectControl from 'getsentry/views/spendAllocations/components/projectSelectControl';
describe('projectSelectControl', () => {
const {projects} = initializeOrg();
beforeEach(() => {
ProjectsStore.loadInitialData(projects);
});
afterEach(() => {
ProjectsStore.reset();
});
it('removes options that are filtered out', async () => {
const {rerender} = render(
);
await selectEvent.openMenu(screen.getByText('Select a project to continue'));
expect(screen.getAllByTestId('badge-display-name')).toHaveLength(1);
rerender(
);
expect(screen.getByText('No options')).toBeInTheDocument();
});
it('calls invokes onChange on select', async () => {
const mockCallback = jest.fn();
render(
);
await selectEvent.openMenu(screen.getByText('Select a project to continue'));
expect(screen.getAllByTestId('badge-display-name')).toHaveLength(1);
expect(mockCallback.mock.calls).toHaveLength(0);
// Menu is still open from above
await userEvent.click(screen.getByText(projects[0]!.slug));
expect(mockCallback.mock.calls).toHaveLength(1);
});
});