From d8b80f0fe9588303ef21bf02f71f7bdb018b179e Mon Sep 17 00:00:00 2001 From: Paul Armstrong Date: Sat, 13 Feb 2021 09:14:59 -0800 Subject: [PATCH] test(web): routes/Cameras --- web/src/routes/__tests__/Cameras.test.jsx | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web/src/routes/__tests__/Cameras.test.jsx diff --git a/web/src/routes/__tests__/Cameras.test.jsx b/web/src/routes/__tests__/Cameras.test.jsx new file mode 100644 index 000000000..31f5a36aa --- /dev/null +++ b/web/src/routes/__tests__/Cameras.test.jsx @@ -0,0 +1,43 @@ +import { h } from 'preact'; +import * as Api from '../../api'; +import Cameras from '../Cameras'; +import * as CameraImage from '../../components/CameraImage'; +import { render, screen } from '@testing-library/preact'; + +jest.mock('../../api/baseUrl'); + +describe('Cameras Route', () => { + let useConfigMock; + + beforeEach(() => { + useConfigMock = jest.spyOn(Api, 'useConfig').mockImplementation(() => ({ + data: { + cameras: { + front: { name: 'front', objects: { track: ['taco', 'cat', 'dog'] } }, + side: { name: 'side', objects: { track: ['taco', 'cat', 'dog'] } }, + }, + }, + status: 'loaded', + })); + jest.spyOn(Api, 'useApiHost').mockImplementation(() => 'http://base-url.local:5000'); + jest.spyOn(CameraImage, 'default').mockImplementation(() =>
); + }); + + test('shows an ActivityIndicator if not yet loaded', async () => { + useConfigMock.mockReturnValueOnce(() => ({ status: 'loading' })); + render(); + expect(screen.queryByLabelText('Loading…')).toBeInTheDocument(); + }); + + test('shows cameras', async () => { + render(); + + expect(screen.queryByLabelText('Loading…')).not.toBeInTheDocument(); + + expect(screen.queryByText('front')).toBeInTheDocument(); + expect(screen.queryByText('front').closest('a')).toHaveAttribute('href', '/cameras/front'); + + expect(screen.queryByText('side')).toBeInTheDocument(); + expect(screen.queryByText('side').closest('a')).toHaveAttribute('href', '/cameras/side'); + }); +});