/**
* 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 {
Accordion,
AccordionItem,
AccordionPanel,
AccordionTrigger,
createAccordion,
} from '../index';
import { render, screen, userEvent } from '@crossed/test';
import { Text } from 'react-native';
describe('Accordion', () => {
test('createAccordion', async () => {
const components = createAccordion();
expect(Object.keys(components)).toEqual([
'Accordion',
'AccordionItem',
'AccordionTrigger',
'AccordionPanel',
'rootContext',
'itemContext',
]);
});
test('Show component, single', async () => {
render(
title 1
content 1
title 1
content 2
);
expect(screen.getByTestId('item-1')).toBeVisible();
expect(screen.getByTestId('item-2')).toBeVisible();
expect(screen.getByTestId('trigger-1')).toBeVisible();
expect(screen.getByTestId('trigger-2')).toBeVisible();
expect(screen.getByTestId('panel-1')).toBeVisible();
expect(() => screen.getByTestId('panel-2')).toThrow();
await userEvent.click(screen.getByTestId('trigger-2'));
expect(screen.getByTestId('panel-2')).toBeVisible();
expect(() => screen.getByTestId('panel-1')).toThrow();
await userEvent.click(screen.getByTestId('trigger-2'));
expect(screen.getByTestId('panel-2')).toBeVisible();
expect(() => screen.getByTestId('panel-1')).toThrow();
});
test('Show component, multiple', async () => {
render(
title 1
content 1
title 1
content 2
);
expect(screen.getByTestId('item-1')).toBeVisible();
expect(screen.getByTestId('item-2')).toBeVisible();
expect(screen.getByTestId('trigger-1')).toBeVisible();
expect(screen.getByTestId('trigger-2')).toBeVisible();
expect(screen.getByTestId('panel-1')).toBeVisible();
expect(() => screen.getByTestId('panel-2')).toThrow();
await userEvent.click(screen.getByTestId('trigger-2'));
expect(screen.getByTestId('panel-1')).toBeVisible();
expect(screen.getByTestId('panel-2')).toBeVisible();
await userEvent.click(screen.getByTestId('trigger-1'));
expect(screen.getByTestId('panel-2')).toBeVisible();
expect(() => screen.getByTestId('panel-1')).toThrow();
});
});