import {OrganizationFixture} from 'sentry-fixture/organization';
import {render, screen} from 'sentry-test/reactTestingLibrary';
import ProjectVelocityScoreCard from './projectVelocityScoreCard';
describe('ProjectDetail > ProjectVelocity', function () {
const organization = OrganizationFixture();
const selection = {
projects: [1],
environments: [],
datetime: {
start: null,
end: null,
period: '14d',
utc: null,
},
};
afterEach(function () {
MockApiClient.clearMockResponses();
});
it('renders release count', async function () {
const previousDataEndpointMock = MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/releases/stats/`,
body: Array.from({length: 98}).map((_item, index) => ({
version: `0.0.${index + 100}`,
})),
status: 200,
});
const currentDataEndpointMock = MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/releases/stats/`,
body: Array.from({length: 202}).map((_item, index) => ({
version: `0.0.${index + 100}`,
})),
status: 200,
match: [MockApiClient.matchQuery({statsPeriod: '14d'})],
});
render(
);
expect(await screen.findByText('Number of Releases')).toBeInTheDocument();
expect(await screen.findByText('202')).toBeInTheDocument();
expect(await screen.findByText('104')).toBeInTheDocument();
expect(currentDataEndpointMock).toHaveBeenCalledTimes(1);
expect(currentDataEndpointMock).toHaveBeenNthCalledWith(
1,
`/organizations/${organization.slug}/releases/stats/`,
expect.objectContaining({
query: {
environment: [],
project: 1,
statsPeriod: '14d',
},
})
);
expect(previousDataEndpointMock).toHaveBeenCalledTimes(1);
expect(previousDataEndpointMock).toHaveBeenNthCalledWith(
1,
`/organizations/${organization.slug}/releases/stats/`,
expect.objectContaining({
query: {
environment: [],
project: 1,
start: '2017-09-19T02:41:20',
end: '2017-10-03T02:41:20',
},
})
);
});
it('renders without releases', async function () {
const dataEndpointMock = MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/releases/stats/`,
body: [],
status: 200,
});
render(
);
expect(await screen.findByRole('button', {name: 'Start Setup'})).toBeInTheDocument();
expect(await screen.findByRole('button', {name: 'Get Tour'})).toBeInTheDocument();
expect(dataEndpointMock).toHaveBeenCalledTimes(3);
});
});