errorRobot.spec.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  2. import ErrorRobot from 'sentry/components/errorRobot';
  3. describe('ErrorRobot', function () {
  4. let getIssues: jest.Func;
  5. let routerContext;
  6. beforeEach(function () {
  7. routerContext = TestStubs.routerContext();
  8. getIssues = MockApiClient.addMockResponse({
  9. url: '/projects/org-slug/project-slug/issues/',
  10. method: 'GET',
  11. body: [],
  12. });
  13. });
  14. afterEach(() => {
  15. jest.clearAllMocks();
  16. MockApiClient.clearMockResponses();
  17. });
  18. describe('with a project', function () {
  19. function createWrapper() {
  20. return render(
  21. <ErrorRobot org={TestStubs.Organization()} project={TestStubs.Project()} />,
  22. {context: routerContext}
  23. );
  24. }
  25. it('Renders a button for creating an event', async function () {
  26. createWrapper();
  27. const button = await screen.findByRole('button', {name: 'Create a sample event'});
  28. expect(button).toBeEnabled();
  29. expect(getIssues).toHaveBeenCalled();
  30. });
  31. it('Renders installation instructions', async function () {
  32. createWrapper();
  33. await userEvent.click(screen.getByText('Installation Instructions'));
  34. expect(routerContext.context.router.push).toHaveBeenCalledWith(
  35. '/org-slug/project-slug/getting-started/'
  36. );
  37. });
  38. });
  39. describe('without a project', function () {
  40. function createWrapper() {
  41. return render(<ErrorRobot org={TestStubs.Organization()} />, {
  42. context: routerContext,
  43. });
  44. }
  45. it('Renders a disabled create event button', function () {
  46. createWrapper();
  47. const button = screen.getByRole('button', {name: 'Create a sample event'});
  48. expect(button).toBeDisabled();
  49. expect(getIssues).toHaveBeenCalledTimes(0);
  50. });
  51. it('does not display install instructions', function () {
  52. createWrapper();
  53. expect(screen.queryByText('Installation Instructions')).not.toBeInTheDocument();
  54. });
  55. });
  56. });