import React from 'react'; import { render, cleanup } from '@testing-library/react'; import { MemoryRouter } from 'react-router'; import vueMetadata from '../../../test/fixtures/metadata/vue.json'; import Version from './Version'; import { waitForElement } from '@testing-library/dom'; import ErrorBoundary from '../../App/AppError'; // :-) we mock this otherways fails on render, some weird issue on material-ui jest.mock('@material-ui/core/Avatar'); // eslint-disable-next-line react/display-name jest.mock('../../components/NotFound', () => () =>
{'Not found'}
); describe('test Version page', () => { jest.setTimeout(40000000); beforeAll(() => { // FIXME: a better way to mock this // @ts-ignore global.window.VERDACCIO_API_URL = 'http://test'; }); afterEach(() => { cleanup(); }); beforeEach(() => { jest.resetAllMocks(); // @ts-ignore fetch.resetMocks(); }); test('should render the version page', async () => { const readmeText = 'test'; // @ts-ignore fetch.mockResponses( [[JSON.stringify(vueMetadata)], { status: 200, headers: { 'content-type': 'application/json' } }], [[`

${readmeText}

`], { status: 200, headers: { 'content-type': 'text/html' } }] ); const { getByTestId, getByText } = render( ); // first it display loading const hasLoading = getByTestId('loading'); expect(hasLoading).toBeTruthy(); // we wait fetch response (mocked above) await waitForElement(() => getByTestId('version-layout')); // check whether readme was loaded const hasReadme = getByText(readmeText); expect(hasReadme).toBeTruthy(); }); test('should render 404 page if the resources are not found', async () => { // @ts-ignore fetch.mockResponses( [[JSON.stringify({})], { status: 404, headers: { 'content-type': 'application/json' } }], [[``], { status: 404, headers: { 'content-type': 'text/html' } }] ); const { getByTestId, getByText } = render( ); // first it display loading const hasLoading = getByTestId('loading'); expect(hasLoading).toBeTruthy(); // we wait fetch response (mocked above) await waitForElement(() => getByText('Not found')); // check whether readme was loaded const hasReadme = getByText('Not found'); expect(hasReadme).toBeTruthy(); }); // Wanna contribute? Here we some scenarios we need to test test.todo('should test click on tabs'); test.todo('should check what is rendered int he sidebar is correct'); test.todo('should test click back home on 404'); test.todo('should test click on elements in the sidebar'); test.todo('should test other not consider scenarios'); });