mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
125 lines
3.2 KiB
TypeScript
125 lines
3.2 KiB
TypeScript
import {RouterContextFixture} from 'sentry-fixture/routerContextFixture';
|
|
|
|
import {render, screen} from 'sentry-test/reactTestingLibrary';
|
|
|
|
import ProcessingIssueHint from 'sentry/components/stream/processingIssueHint';
|
|
|
|
describe('ProcessingIssueHint', function () {
|
|
let issue, container;
|
|
const orgId = 'test-org';
|
|
const projectId = 'test-project';
|
|
|
|
beforeEach(() => {
|
|
issue = {
|
|
hasIssues: false,
|
|
hasMoreResolveableIssues: false,
|
|
issuesProcessing: 0,
|
|
lastSeen: '2019-01-16T15:38:38Z',
|
|
numIssues: 0,
|
|
resolveableIssues: 0,
|
|
signedLink: null,
|
|
};
|
|
});
|
|
|
|
function renderComponent(issueData, showProject = false) {
|
|
const result = render(
|
|
<ProcessingIssueHint
|
|
issue={issueData}
|
|
orgId={orgId}
|
|
projectId={projectId}
|
|
showProject={showProject}
|
|
/>,
|
|
{context: RouterContextFixture()}
|
|
);
|
|
container = result.container;
|
|
}
|
|
|
|
describe('numIssues state', function () {
|
|
beforeEach(() => {
|
|
issue.numIssues = 9;
|
|
});
|
|
|
|
it('displays a button', function () {
|
|
renderComponent(issue);
|
|
const button = screen.getByRole('button');
|
|
expect(button).toBeInTheDocument();
|
|
expect(button).toHaveAttribute(
|
|
'href',
|
|
`/settings/${orgId}/projects/${projectId}/processing-issues/`
|
|
);
|
|
});
|
|
|
|
it('displays an icon', function () {
|
|
renderComponent(issue);
|
|
const icon = container.querySelector('svg');
|
|
expect(icon).toBeInTheDocument();
|
|
});
|
|
|
|
it('displays text', function () {
|
|
renderComponent(issue);
|
|
expect(screen.getByText(/issues blocking/)).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe('issuesProcessing state', function () {
|
|
beforeEach(() => {
|
|
issue.issuesProcessing = 9;
|
|
});
|
|
|
|
it('does not display a button', function () {
|
|
renderComponent(issue);
|
|
expect(screen.queryByRole('button')).not.toBeInTheDocument();
|
|
});
|
|
|
|
it('displays an icon', function () {
|
|
renderComponent(issue);
|
|
const icon = container.querySelector('svg');
|
|
expect(icon).toBeInTheDocument();
|
|
});
|
|
|
|
it('displays text', function () {
|
|
renderComponent(issue);
|
|
expect(screen.getByText(/Reprocessing/)).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe('resolvableIssues state', function () {
|
|
beforeEach(() => {
|
|
issue.resolveableIssues = 9;
|
|
});
|
|
|
|
it('displays a button', function () {
|
|
renderComponent(issue);
|
|
const button = screen.getByRole('button');
|
|
expect(button).toBeInTheDocument();
|
|
expect(button).toHaveAttribute(
|
|
'href',
|
|
`/settings/${orgId}/projects/${projectId}/processing-issues/`
|
|
);
|
|
});
|
|
|
|
it('displays an icon', function () {
|
|
renderComponent(issue);
|
|
const icon = container.querySelector('svg');
|
|
expect(icon).toBeInTheDocument();
|
|
});
|
|
|
|
it('displays text', function () {
|
|
renderComponent(issue);
|
|
expect(
|
|
screen.getByText('There are 9 events pending reprocessing.')
|
|
).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe('showProject state', function () {
|
|
beforeEach(() => {
|
|
issue.numIssues = 9;
|
|
});
|
|
it('displays the project slug', function () {
|
|
renderComponent(issue, true);
|
|
expect(screen.getByText(projectId)).toBeInTheDocument();
|
|
});
|
|
});
|
|
});
|