import {GroupFixture} from 'sentry-fixture/group'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {ShortIdBreadcrumb} from './shortIdBreadcrumb'; describe('ShortIdBreadcrumb', function () { const {organization, project} = initializeOrg(); const group = GroupFixture({shortId: 'ABC-123'}); beforeEach(() => { Object.assign(navigator, { clipboard: {writeText: jest.fn().mockResolvedValue('')}, }); }); it('renders short ID', function () { render(); expect(screen.getByText('ABC-123')).toBeInTheDocument(); }); it('supports copy', async function () { render(); async function clickMenuItem(name: string) { await userEvent.click(screen.getByRole('button', {name: 'Issue copy actions'})); await userEvent.click(screen.getByRole('menuitemradio', {name})); } // Copy short ID await clickMenuItem('Copy Short-ID'); expect(navigator.clipboard.writeText).toHaveBeenCalledWith('ABC-123'); // Copy short ID URL await clickMenuItem('Copy Issue URL'); expect(navigator.clipboard.writeText).toHaveBeenCalledWith( 'http://localhost/organizations/org-slug/issues/1/' ); // Copy short ID Markdown await clickMenuItem('Copy Markdown Link'); expect(navigator.clipboard.writeText).toHaveBeenCalledWith( '[ABC-123](http://localhost/organizations/org-slug/issues/1/)' ); }); });