diff --git a/src/components/Accordion/Accordion.test.tsx b/src/components/Accordion/Accordion.test.tsx index 3a3928252..088be8798 100644 --- a/src/components/Accordion/Accordion.test.tsx +++ b/src/components/Accordion/Accordion.test.tsx @@ -4,7 +4,7 @@ import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; import MatchMediaMock from 'jest-matchmedia-mock'; import { Accordion, AccordionProps, AccordionShape, AccordionSize } from './'; import { IconName } from '../Icon'; -import { render } from '@testing-library/react'; +import { fireEvent, render, waitFor } from '@testing-library/react'; Enzyme.configure({ adapter: new Adapter() }); @@ -73,6 +73,39 @@ describe('Accordion', () => { expect(container).toMatchSnapshot(); }); + test('Accordion toggle', async () => { + const { container } = render( + + ); + const summary = container.querySelector('.accordion-summary'); + fireEvent.click(summary); + await waitFor(() => + expect( + container.getElementsByClassName('accordion-summary-expanded') + ).toHaveLength(1) + ); + expect(container.querySelector('.show')).toBeTruthy(); + fireEvent.click(summary); + await waitFor(() => + expect( + container.getElementsByClassName('accordion-summary-expanded') + ).toHaveLength(0) + ); + expect(container.querySelector('.show')).toBeFalsy(); + }); + + test('Accordion is not bordered', () => { + const { container } = render( + + ); + expect(container.querySelector('.accordion-border')).toBeFalsy(); + expect(container).toMatchSnapshot(); + }); + test('Accordion is large', () => { const { container } = render( diff --git a/src/components/Accordion/Accordion.tsx b/src/components/Accordion/Accordion.tsx index 7564b8c6b..180976627 100644 --- a/src/components/Accordion/Accordion.tsx +++ b/src/components/Accordion/Accordion.tsx @@ -89,6 +89,7 @@ export const AccordionBody: FC = ({ const accordionBodyStyles: string = mergeClasses( styles.accordionBody, { + [styles.show]: expanded, [styles.borderTop]: bordered, [styles.medium]: size === AccordionSize.Medium, [styles.large]: size === AccordionSize.Large, diff --git a/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap b/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap index cde6d656d..e5484887e 100644 --- a/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +++ b/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap @@ -162,6 +162,87 @@ exports[`Accordion Accordion is medium 1`] = ` `; +exports[`Accordion Accordion is not bordered 1`] = ` +
+
+ +
+
+
+ Icons are optional for accordions. The body area in the expanded view is like a modal or a slide-in panel. You can put any smaller components inside to build a layout. +
+
+
+
+
+`; + exports[`Accordion Accordion is pill shaped 1`] = `