import {OrganizationFixture} from 'sentry-fixture/organization';
import {render, screen} from 'sentry-test/reactTestingLibrary';
import {SessionFieldWithOperation} from 'sentry/types/organization';
import ProjectStabilityScoreCard from 'sentry/views/projectDetail/projectScoreCards/projectStabilityScoreCard';
describe('ProjectDetail > ProjectStability', function () {
const organization = OrganizationFixture();
const selection = {
projects: [1],
environments: [],
datetime: {
start: null,
end: null,
period: '14d',
utc: null,
},
};
afterEach(function () {
MockApiClient.clearMockResponses();
});
it('renders crash free users', async function () {
const endpointMock = MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/sessions/`,
body: {
groups: [
{
totals: {
[SessionFieldWithOperation.CRASH_FREE_RATE_USERS]: 0.99,
},
},
],
},
status: 200,
});
render(
);
expect(await screen.findByText('Crash Free Users')).toBeInTheDocument();
expect(await screen.findByText('99%')).toBeInTheDocument();
expect(endpointMock).toHaveBeenNthCalledWith(
1,
`/organizations/${organization.slug}/sessions/`,
expect.objectContaining({
query: {
environment: [],
field: SessionFieldWithOperation.CRASH_FREE_RATE_USERS,
project: 1,
interval: '1d',
statsPeriod: '14d',
query: 'test-query',
},
})
);
});
it('renders crash free sessions', async function () {
const endpointMock = MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/sessions/`,
body: {
groups: [
{
totals: {
[SessionFieldWithOperation.CRASH_FREE_RATE_SESSIONS]: 0.99,
},
},
],
},
status: 200,
});
render(
);
expect(await screen.findByText('Crash Free Sessions')).toBeInTheDocument();
expect(await screen.findByText('99%')).toBeInTheDocument();
expect(endpointMock).toHaveBeenNthCalledWith(
1,
`/organizations/${organization.slug}/sessions/`,
expect.objectContaining({
query: {
environment: [],
field: SessionFieldWithOperation.CRASH_FREE_RATE_SESSIONS,
project: 1,
interval: '1d',
statsPeriod: '14d',
query: 'test-query',
},
})
);
});
it('renders without sessions', async function () {
const endpointMock = MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/sessions/`,
body: {
detail: 'test error',
},
status: 404,
});
render(
);
expect(await screen.findByText('Crash Free Sessions')).toBeInTheDocument();
expect(await screen.findByText('Start Setup')).toBeInTheDocument();
expect(endpointMock).not.toHaveBeenCalled();
});
});