ToolboxExpandableContent.test.tsx 1.92 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/**
 * See the NOTICE file distributed with this work for additional information
 * regarding copyright ownership.
 *
 * Licensed 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.
 */

17
import React from 'react';
18 19
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
20 21 22 23 24 25

import ToolboxExpandableContent, {
  ToggleButton
} from './ToolboxExpandableContent';

const MainContent = () => (
26
  <div data-test-id="main content">
27
    <span>This is main content</span>
28
    <ToggleButton label="Click me!" />
29 30
  </div>
);
31 32 33
const FooterContent = () => (
  <div data-test-id="footer content">This is footer content</div>
);
34 35 36 37 38 39 40 41

const minimalProps = {
  mainContent: <MainContent />,
  footerContent: <FooterContent />
};

describe('<ToolboxExpandableContent />', () => {
  it('renders only main content by default', () => {
42 43 44
    render(<ToolboxExpandableContent {...minimalProps} />);
    const mainContent = screen.queryByTestId('main content');
    const footerContent = screen.queryByTestId('footer content');
45

46 47
    expect(mainContent).toBeTruthy();
    expect(footerContent).toBeFalsy();
48 49 50
  });

  it('shows footer content when ToggleButton is clicked', () => {
51 52 53
    render(<ToolboxExpandableContent {...minimalProps} />);
    const toggleButton = screen.getByText('Click me!');

54
    userEvent.click(toggleButton as HTMLElement);
55

56 57
    const footerContent = screen.queryByTestId('footer content');
    expect(footerContent).toBeTruthy();
58 59
  });
});