/* * SPDX-License-Identifier: Apache-2.0 * * The OpenSearch Contributors require contributions made to * this file be licensed under the Apache-2.0 license or a * compatible open source license. * * Modifications Copyright OpenSearch Contributors. See * GitHub history for details. */ /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch B.V. licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import React from 'react'; import { render, mount } from 'enzyme'; import { requiredProps } from '../../test/required_props'; import { OuiAccordion } from './accordion'; let id = 0; const getId = () => `${id++}`; describe('OuiAccordion', () => { test('is rendered', () => { const component = render(); expect(component).toMatchSnapshot(); }); describe('props', () => { describe('buttonContentClassName', () => { it('is rendered', () => { const component = render( ); expect(component).toMatchSnapshot(); }); }); describe('buttonContent', () => { it('is rendered', () => { const component = render( Button content} /> ); expect(component).toMatchSnapshot(); }); }); describe('buttonProps', () => { it('is rendered', () => { const component = render( ); expect(component).toMatchSnapshot(); }); }); describe('extraAction', () => { it('is rendered', () => { const component = render( Extra action} /> ); expect(component).toMatchSnapshot(); }); }); describe('initialIsOpen', () => { it('is rendered', () => { const component = render(

You can see me.

); expect(component).toMatchSnapshot(); }); }); describe('arrowDisplay', () => { it('right is rendered', () => { const component = render(

You can see me.

); expect(component).toMatchSnapshot(); }); it('none is rendered', () => { const component = render(

You can see me.

); expect(component).toMatchSnapshot(); }); }); describe('forceState', () => { it('is rendered', () => { const component = render(

You can not see me

); expect(component).toMatchSnapshot(); }); it('accepts and calls an optional callback on click', () => { const onToggleHandler = jest.fn(); const component = mount( ); component.find('button').simulate('click'); expect(onToggleHandler).toBeCalled(); expect(onToggleHandler).toBeCalledWith(true); }); }); describe('isLoading', () => { it('is rendered', () => { const component = render(

You can see me.

); expect(component).toMatchSnapshot(); }); }); describe('isLoadingMessage', () => { it('is rendered', () => { const component = render(

You can't see me.

); expect(component).toMatchSnapshot(); }); }); }); describe('behavior', () => { it('opens when clicked once', () => { const component = mount(); component.find('button').simulate('click'); expect(component).toMatchSnapshot(); }); it('closes when clicked twice', () => { const component = mount(); component.find('button').simulate('click'); component.find('button').simulate('click'); expect(component).toMatchSnapshot(); }); it('accepts and calls an optional callback on open and close', () => { const onToggleHandler = jest.fn(); const component = mount( ); component.find('button').simulate('click'); expect(onToggleHandler).toBeCalled(); expect(onToggleHandler).toBeCalledWith(true); component.find('button').simulate('click'); expect(onToggleHandler).toBeCalled(); expect(onToggleHandler).toBeCalledWith(false); }); it('moves focus to the content when expanded', () => { const component = mount(); const accordionClass = component.instance(); const childWrapper = accordionClass.childWrapper; expect(childWrapper).not.toBeFalsy(); expect(childWrapper).not.toBe(document.activeElement); // click button component.find('button').simulate('click'); expect(childWrapper).toBe(document.activeElement); }); }); });