import {ProjectFixture} from 'sentry-fixture/project';
import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import ProjectQuickLinks from 'sentry/views/projectDetail/projectQuickLinks';
describe('ProjectDetail > ProjectQuickLinks', function () {
const {organization, router} = initializeOrg({
organization: {features: ['performance-view']},
});
afterEach(() => {
jest.clearAllMocks();
});
it('renders a list', async function () {
render(
,
{router}
);
expect(screen.getByRole('heading', {name: 'Quick Links'})).toBeInTheDocument();
expect(screen.getAllByRole('link')).toHaveLength(3);
const userFeedback = screen.getByRole('link', {name: 'User Feedback'});
const keyTransactions = screen.getByRole('link', {name: 'View Transactions'});
const mostChangedTransactions = screen.getByRole('link', {
name: 'Most Improved/Regressed Transactions',
});
await userEvent.click(userFeedback);
expect(router.push).toHaveBeenCalledWith({
pathname: '/organizations/org-slug/user-feedback/',
query: {project: '2'},
});
await userEvent.click(keyTransactions);
expect(router.push).toHaveBeenCalledWith({
pathname: '/organizations/org-slug/performance/',
query: {project: '2'},
});
await userEvent.click(mostChangedTransactions);
expect(router.push).toHaveBeenCalledWith({
pathname: '/organizations/org-slug/performance/trends/',
query: {
cursor: undefined,
project: '2',
query: 'tpm():>0.01 transaction.duration:>0 transaction.duration:<15min',
},
});
});
it('disables link if feature is missing', async function () {
render(
,
{router}
);
const keyTransactions = screen.getByText('View Transactions');
await userEvent.click(keyTransactions);
expect(router.push).toHaveBeenCalledTimes(0);
await userEvent.hover(keyTransactions);
expect(
await screen.findByText("You don't have access to this feature")
).toBeInTheDocument();
});
});