1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import {mountWithTheme} from 'sentry-test/enzyme';
- import StacktraceLinkModal from 'sentry/components/events/interfaces/frame/stacktraceLinkModal';
- describe('StacktraceLinkModal', function () {
- const org = TestStubs.Organization();
- const project = TestStubs.Project();
- const integration = TestStubs.GitHubIntegration();
- const filename = '/sentry/app.py';
- const repo = TestStubs.Repository({integrationId: integration.id});
- const config = TestStubs.RepositoryProjectPathConfig(project, repo, integration);
- const sourceUrl = 'https://github.com/getsentry/sentry/blob/master/src/sentry/app.py';
- const closeModal = jest.fn();
- const modalElements = {
- Header: p => p.children,
- Body: p => p.children,
- Footer: p => p.children,
- };
- const createWrapper = (statusCode = 200) => {
- const configData = {
- stackRoot: '',
- sourceRoot: 'src/',
- integrationId: integration.id,
- repositoryId: repo.id,
- defaultBranch: 'master',
- };
- MockApiClient.addMockResponse({
- url: `/projects/${org.slug}/${project.slug}/repo-path-parsing/`,
- method: 'POST',
- body: {...configData},
- });
- MockApiClient.addMockResponse({
- url: `/organizations/${org.slug}/code-mappings/`,
- method: 'POST',
- statusCode,
- });
- MockApiClient.addMockResponse({
- url: `/projects/${org.slug}/${project.slug}/stacktrace-link/`,
- query: {file: filename, commitId: 'master', platform: 'python'},
- body: {config, sourceUrl, integrations: [integration]},
- });
- return mountWithTheme(
- <StacktraceLinkModal
- {...modalElements}
- closeModal={closeModal}
- filename={filename}
- integrations={[integration]}
- organization={org}
- project={project}
- />
- );
- };
- const submitQuickSetupInput = async wrapper => {
- wrapper.find('input').simulate('change', {target: {value: sourceUrl}});
- wrapper.find('Button[data-test-id="quick-setup-button"]').simulate('click');
- await tick();
- wrapper.update();
- };
- beforeEach(function () {
- closeModal.mockReset();
- MockApiClient.clearMockResponses();
- });
- it('renders manual setup option', function () {
- const wrapper = createWrapper();
- expect(wrapper.find('IntegrationName').text()).toEqual('Test Integration');
- });
- it('closes modal after successful quick setup', async function () {
- const wrapper = createWrapper();
- await submitQuickSetupInput(wrapper);
- expect(closeModal).toHaveBeenCalled();
- });
- it('keeps modal open on unsuccessful quick setup', async function () {
- const wrapper = createWrapper(400);
- await submitQuickSetupInput(wrapper);
- expect(closeModal).not.toHaveBeenCalled();
- });
- });
|