/** * 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(); }); });