import {DebugFileFixture} from 'sentry-fixture/debugFile';
import {initializeOrg} from 'sentry-test/initializeOrg';
import {
render,
renderGlobalModal,
screen,
userEvent,
} from 'sentry-test/reactTestingLibrary';
import ProjectDebugFiles from 'sentry/views/settings/projectDebugFiles';
describe('ProjectDebugFiles', function () {
const {organization, project, router} = initializeOrg();
const props = {
organization,
project,
params: {projectId: project.slug},
location: {
...router.location,
query: {
query: '',
},
},
route: {},
router,
routes: [],
routeParams: {},
};
const endpoint = `/projects/${organization.slug}/${project.slug}/files/dsyms/`;
beforeEach(function () {
MockApiClient.addMockResponse({
url: endpoint,
body: [DebugFileFixture()],
});
});
it('renders', function () {
render();
expect(screen.getByText('Debug Information Files')).toBeInTheDocument();
// Uploaded debug files content
expect(screen.getByText('Uploaded debug information files')).toBeInTheDocument();
expect(screen.getByText('libS.so')).toBeInTheDocument();
});
it('renders empty', function () {
MockApiClient.addMockResponse({
url: endpoint,
body: [],
});
render();
// Uploaded debug files content
expect(
screen.getByText('There are no debug symbols for this project.')
).toBeInTheDocument();
});
it('deletes the file', async function () {
const deleteMock = MockApiClient.addMockResponse({
method: 'DELETE',
url: `/projects/${organization.slug}/${project.slug}/files/dsyms/?id=${
DebugFileFixture().id
}`,
});
render();
renderGlobalModal();
// Delete button
await userEvent.click(screen.getByTestId('delete-dif'));
// Confirm Modal
await screen.findByRole('dialog');
await userEvent.click(screen.getByTestId('confirm-button'));
expect(deleteMock).toHaveBeenCalled();
});
});