import { render, RenderOptions } from '@testing-library/react'; import GithubSlugger from 'github-slugger'; import React, { FC, ReactElement } from 'react'; import { HeadingsContext } from '../page-higher-order/withHeadingManager'; import APISection from './APISection'; import { HeadingManager } from '~/common/headingManager'; const Wrapper: FC = ({ children }) => ( {children} ); const customRender = (element: ReactElement, options?: Omit) => render(element, { wrapper: Wrapper, ...options }); describe('APISection', () => { test('no data', () => { const { container, getAllByText } = render(); expect(getAllByText('No API data file found, sorry!')).toHaveLength(1); expect(container).toMatchSnapshot(); }); test('expo-apple-authentication', () => { const { container, queryByText, getAllByRole, queryAllByText, queryByDisplayValue } = customRender( ); expect(getAllByRole('heading', { level: 2 })).toHaveLength(5); expect(getAllByRole('heading', { level: 3 })).toHaveLength(20); expect(getAllByRole('table')).toHaveLength(6); expect(queryByText('Event Subscriptions')); expect(queryByText('Components')); expect(queryByDisplayValue('AppleAuthenticationButton')); expect(queryByDisplayValue('AppleAuthenticationButtonProps')); expect(queryByDisplayValue('Subscription')); expect(queryAllByText('Constants')).toHaveLength(0); expect(queryAllByText('Hooks')).toHaveLength(0); expect(queryAllByText('Interfaces')).toHaveLength(0); expect(container).toMatchSnapshot(); }); test('expo-barcode-scanner', () => { const { container, queryByText, getAllByRole, queryAllByText, queryByDisplayValue } = customRender( ); expect(getAllByRole('heading', { level: 2 })).toHaveLength(6); expect(getAllByRole('heading', { level: 3 })).toHaveLength(16); expect(queryByText('Components')); expect(queryByText('Hooks')); expect(queryByDisplayValue('BarCodeEvent')); expect(queryByDisplayValue('BarCodeScannerProps')); expect(queryByDisplayValue('Subscription')); expect(queryByDisplayValue('usePermissions')); expect(queryAllByText('Constants')).toHaveLength(0); expect(queryAllByText('Props')).toHaveLength(0); expect(container).toMatchSnapshot(); }); test('expo-pedometer', () => { const { container, queryByText, getAllByRole, queryAllByText, queryByDisplayValue } = customRender(); expect(getAllByRole('heading', { level: 2 })).toHaveLength(4); expect(getAllByRole('heading', { level: 3 })).toHaveLength(11); expect(getAllByRole('table')).toHaveLength(3); expect(queryByText('Methods')); expect(queryByText('Enums')); expect(queryByText('Interfaces')); expect(queryByText('Types')); expect(queryByDisplayValue('PermissionResponse')); expect(queryByDisplayValue('PermissionStatus')); expect(queryAllByText('Constants')).toHaveLength(0); expect(queryAllByText('Event Subscriptions')).toHaveLength(0); expect(queryAllByText('Hooks')).toHaveLength(0); expect(container).toMatchSnapshot(); }); });