/** * Copyright (c) Paymium. * * This source code is licensed under the MIT license found in the * LICENSE file in the root of this projects source tree. */ import '@testing-library/jest-dom'; import { render, screen } from '@crossed/test'; import { createLabelMain } from '../Label'; import React, { ReactNode, forwardRef } from 'react'; import { Provider } from '../context'; jest.mock('../context'); const Comp = forwardRef((p: any, ref: any) =>
); const NewComp = createLabelMain(Comp); const ProviderMocked = Provider as unknown as jest.Mock; describe('createLabelMain', () => { const oldUseId = React.useId; const oldUseRef = React.useRef; beforeEach(() => { React.useId = jest.fn(() => 'id'); React.useRef = jest.fn(() => ({ current: undefined })); ProviderMocked.mockImplementation(({ children }: any) => <>{children}); }); afterEach(() => { React.useId = oldUseId; React.useRef = oldUseRef; ProviderMocked.mockReset(); }); afterAll(() => { jest.restoreAllMocks(); }); test('init', async () => { const child = 'Pass child'; render({child}); expect(React.useId).toBeCalled(); expect(React.useRef).toBeCalled(); expect(ProviderMocked).toBeCalled(); expect(ProviderMocked.mock.calls[0][0]).toHaveProperty('id', 'id'); expect(ProviderMocked.mock.calls[0][0]).toHaveProperty('inputRef', { current: undefined, }); expect(ProviderMocked.mock.calls[0][0]).toHaveProperty('children'); await screen.findByText(child); }); });