/**
* 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 { ReactNode, forwardRef } from 'react';
import { createButtonGroup } from '../ButtonGroup';
import { ProviderGroup } from '../contextGroup';
import { RovingFocusGroup } from '../../utils/RovingFocus';
import { ButtonGroupCollection } from '../contextCollection';
const Comp = forwardRef((p: any, ref: any) =>
);
const NewComp = createButtonGroup(Comp);
jest.mock('../contextGroup');
jest.mock('../contextCollection');
jest.mock('../../utils/RovingFocus');
const ProviderMocked = ProviderGroup as unknown as jest.Mock;
const RovingFocusGroupMocked = (RovingFocusGroup as any)
.render as unknown as jest.Mock;
const CollectionProviderMocked =
ButtonGroupCollection.Provider as unknown as jest.Mock;
const CollectionSlotMocked = (ButtonGroupCollection.Slot as any)
.render as unknown as jest.Mock;
describe('createButtonGroup', () => {
beforeEach(() => {
ProviderMocked.mockImplementation(({ children }: any) => <>{children}>);
RovingFocusGroupMocked.mockImplementation(({ children }: any) => (
<>{children}>
));
CollectionProviderMocked.mockImplementation(({ children }: any) => (
<>{children}>
));
CollectionSlotMocked.mockImplementation(({ children }: any) => (
<>{children}>
));
});
afterEach(() => {
ProviderMocked.mockReset();
RovingFocusGroupMocked.mockReset();
CollectionProviderMocked.mockReset();
CollectionSlotMocked.mockReset();
});
test('init', async () => {
const child = 'Pass child';
render({child});
expect(ProviderMocked).toHaveBeenCalled();
expect(ProviderMocked.mock.lastCall[0]).toHaveProperty('children');
expect(ProviderMocked.mock.lastCall[0]).toHaveProperty('grouped', true);
expect(ProviderMocked.mock.lastCall[0]).toHaveProperty(
'orientation',
'horizontal'
);
expect(RovingFocusGroupMocked).toHaveBeenCalled();
expect(RovingFocusGroupMocked.mock.lastCall[0]).toHaveProperty('children');
expect(RovingFocusGroupMocked.mock.lastCall[0]).toHaveProperty(
'orientation',
'horizontal'
);
expect(CollectionProviderMocked).toHaveBeenCalled();
expect(CollectionProviderMocked.mock.lastCall[0]).toHaveProperty(
'children'
);
expect(CollectionSlotMocked).toHaveBeenCalled();
expect(CollectionSlotMocked.mock.lastCall[0]).toHaveProperty('children');
await screen.getByText(child);
});
});