settingsLayout.spec.jsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {BreadcrumbContextProvider} from 'sentry-test/providers/breadcrumbContextProvider';
  2. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  3. import {Client} from 'sentry/api';
  4. import SettingsLayout from 'sentry/views/settings/components/settingsLayout';
  5. describe('SettingsLayout', function () {
  6. beforeEach(function () {
  7. Client.clearMockResponses();
  8. Client.addMockResponse({
  9. url: '/internal/health/',
  10. body: {
  11. problems: [],
  12. },
  13. });
  14. Client.addMockResponse({
  15. url: '/organizations/',
  16. body: [TestStubs.Organization()],
  17. });
  18. Client.addMockResponse({
  19. url: '/organizations/org-slug/',
  20. method: 'DELETE',
  21. statusCode: 401,
  22. body: {
  23. sudoRequired: true,
  24. },
  25. });
  26. Client.addMockResponse({
  27. url: '/authenticators/',
  28. body: [],
  29. });
  30. });
  31. it('renders', function () {
  32. const {container} = render(
  33. <BreadcrumbContextProvider>
  34. <SettingsLayout router={TestStubs.router()} route={{}} routes={[]} />
  35. </BreadcrumbContextProvider>
  36. );
  37. expect(container).toSnapshot();
  38. });
  39. it('can render navigation', function () {
  40. render(
  41. <BreadcrumbContextProvider>
  42. <SettingsLayout
  43. router={TestStubs.router()}
  44. route={{}}
  45. routes={[]}
  46. renderNavigation={() => <nav />}
  47. />
  48. </BreadcrumbContextProvider>
  49. );
  50. expect(screen.getByRole('navigation')).toBeInTheDocument();
  51. });
  52. it('can toggle mobile navigation', function () {
  53. render(
  54. <BreadcrumbContextProvider>
  55. <SettingsLayout
  56. router={TestStubs.router()}
  57. route={{}}
  58. routes={[]}
  59. renderNavigation={opts => (opts.isMobileNavVisible ? <nav /> : null)}
  60. />
  61. </BreadcrumbContextProvider>
  62. );
  63. expect(screen.queryByRole('navigation')).not.toBeInTheDocument();
  64. userEvent.click(screen.getByRole('button', {name: 'Open the menu'}));
  65. expect(screen.queryByRole('navigation')).toBeInTheDocument();
  66. });
  67. });