Sidebar.test.jsx 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. import { h } from 'preact';
  2. import * as Api from '../api';
  3. import * as Context from '../context';
  4. import Sidebar from '../Sidebar';
  5. import { render, screen } from '@testing-library/preact';
  6. describe('Sidebar', () => {
  7. beforeEach(() => {
  8. jest.spyOn(Api, 'useConfig').mockImplementation(() => ({
  9. data: {
  10. cameras: {
  11. front: { name: 'front', objects: { track: ['taco', 'cat', 'dog'] } },
  12. side: { name: 'side', objects: { track: ['taco', 'cat', 'dog'] } },
  13. },
  14. },
  15. }));
  16. jest.spyOn(Context, 'useDrawer').mockImplementation(() => ({ showDrawer: true, setShowDrawer: () => {} }));
  17. });
  18. test('does not render cameras by default', async () => {
  19. render(<Sidebar />);
  20. expect(screen.queryByRole('link', { name: 'front' })).not.toBeInTheDocument();
  21. expect(screen.queryByRole('link', { name: 'side' })).not.toBeInTheDocument();
  22. });
  23. test('render cameras if in camera route', async () => {
  24. window.history.replaceState({}, 'Cameras', '/cameras/front');
  25. render(<Sidebar />);
  26. expect(screen.queryByRole('link', { name: 'front' })).toBeInTheDocument();
  27. expect(screen.queryByRole('link', { name: 'side' })).toBeInTheDocument();
  28. });
  29. });