import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import ProjectToolbarSettings from 'sentry/views/settings/project/projectToolbar'; describe('ProjectToolbarSettings', function () { const {routerProps, organization, project, router} = initializeOrg(); const url = `/projects/${organization.slug}/${project.slug}/`; beforeEach(function () { MockApiClient.clearMockResponses(); }); it('displays previously saved setting', function () { const initialOptionValue = 'sentry.io'; project.options = {'sentry:toolbar_allowed_origins': initialOptionValue}; render( , { router, } ); expect(screen.getByRole('textbox')).toHaveValue(initialOptionValue); }); it('can submit new allowed origins', async function () { render( , { router, } ); const mockPut = MockApiClient.addMockResponse({ url, method: 'PUT', }); const textarea = screen.getByRole('textbox'); expect(textarea).toBeEnabled(); const mockInput = 'test.io\n*.example.com'; await userEvent.clear(textarea); await userEvent.type(textarea, mockInput); await userEvent.tab(); // unfocus ("blur") the input expect(mockPut).toHaveBeenCalledWith( url, expect.objectContaining({ method: 'PUT', data: { options: {'sentry:toolbar_allowed_origins': mockInput}, }, }) ); }); it('displays nothing when project options are undefined', function () { project.options = undefined; render( , { router, } ); expect(screen.getByRole('textbox')).toHaveValue(''); }); it('displays nothing when project options are empty', function () { project.options = {}; render( , { router, } ); expect(screen.getByRole('textbox')).toHaveValue(''); }); });