Skip to content
Snippets Groups Projects
Select Git revision
  • 024c592ed5d6c8a356c2eee41d4463730da67f02
  • mui5-annotation-on-video-stable default
  • get_setter_canvasSizeInformations
  • fix-error-div-into-p
  • annotation-on-video-v2
  • detached
  • annotation-on-video-r17
  • mui5
  • mui5-react-18
  • jacob-test
  • annotation-on-video protected
  • master
  • test-antoinev1
  • 20-fetch-thumbnail-on-annotation
  • add-research-field
  • Save
  • add-plugin
  • 14-wip-no-seek-to
  • 14-bug-on-video-time-control
  • 9_wip_videotests
  • _upgrade_material_ui
  • latest-tetras-16
  • v3.3.0
  • v3.2.0
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v3.0.0-rc.7
  • v3.0.0-rc.6
  • v3.0.0-rc.5
  • v3.0.0-rc.4
  • v3.0.0-rc.3
  • v3.0.0-rc.2
  • v3.0.0-rc.1
  • v3.0.0-beta.10
  • v3.0.0-beta.9
  • v3.0.0-beta.8
  • v3.0.0-beta.7
  • v3.0.0-beta.6
  • v3.0.0-beta.5
  • v3.0.0-beta.3
41 results

CompanionArea.test.js

Blame
  • Loïs Poujade's avatar
    Loïs Poujade authored
    ran `npx @mui/codemod v5.0.0/preset-safe`
    024c592e
    History
    CompanionArea.test.js 4.41 KiB
    import React from 'react';
    import { shallow } from 'enzyme';
    import Slide from '@mui/material/Slide';
    import ArrowLeftIcon from '@mui/icons-material/ArrowLeftSharp';
    import ArrowRightIcon from '@mui/icons-material/ArrowRightSharp';
    import MiradorMenuButton from '../../../src/containers/MiradorMenuButton';
    import { CompanionArea } from '../../../src/components/CompanionArea';
    import CompanionWindowFactory from '../../../src/containers/CompanionWindowFactory';
    
    /** */
    function createWrapper(props) {
      return shallow(
        <CompanionArea
          classes={{ horizontal: 'horizontal' }}
          direction="ltr"
          windowId="abc123"
          position="right"
          companionAreaOpen
          companionWindowIds={['foo', 'baz']}
          t={key => key}
          {...props}
        />,
      );
    }
    
    describe('CompanionArea', () => {
      it('should render all <CompanionWindow>', () => {
        const wrapper = createWrapper();
        expect(wrapper.find(CompanionWindowFactory).length).toBe(2);
        expect(wrapper.find(Slide).prop('direction')).toBe('left');
      });
    
      it('when rtl, the left slide should be from the right', () => {
        const wrapper = createWrapper({
          direction: 'rtl',
        });
        expect(wrapper.find(CompanionWindowFactory).length).toBe(2);
        expect(wrapper.find(Slide).prop('direction')).toBe('right');
      });
    
      it('when rtl, the right slide should be from the left', () => {
        const wrapper = createWrapper({
          direction: 'rtl',
          position: 'left',
        });
        expect(wrapper.find(CompanionWindowFactory).length).toBe(2);
        expect(wrapper.find(Slide).prop('direction')).toBe('left');
      });
    
      it('should add the appropriate classes when the companion area fills the full width', () => {
        const wrapper = createWrapper({ position: 'bottom' });
        expect(wrapper.find('div.horizontal').length).toBe(2);
        expect(wrapper.find(Slide).prop('direction')).toBe('up');
      });
    
      it('should pass correct props to the <CompanionWindow> components', () => {
        const wrapper = createWrapper();
        const props = wrapper.find(CompanionWindowFactory).at(0).props();
        expect(props.id).toBe('foo');
        expect(props.windowId).toBe('abc123');
      });
    
      it('has a toggle to show the companion area window in the left position', () => {
        const setCompanionAreaOpen = jest.fn();
    
        const wrapper = createWrapper({
          companionAreaOpen: false,
          position: 'left',
          setCompanionAreaOpen,
          sideBarOpen: true,
        });
    
        expect(wrapper.find(MiradorMenuButton).length).toBe(1);
        expect(wrapper.find(MiradorMenuButton).first().children(ArrowRightIcon).length).toBe(1);
        expect(wrapper.find(Slide).prop('direction')).toBe('right');
        expect(wrapper.find(MiradorMenuButton).prop('aria-expanded')).toBe(false);
        expect(wrapper.find('div.mirador-companion-windows').length).toBe(1);
        expect(wrapper.find('div.mirador-companion-windows').props().style.display).toBe('none');
    
        wrapper.find(MiradorMenuButton).first().props().onClick(); // Trigger the onClick prop
    
        expect(setCompanionAreaOpen).toHaveBeenCalledWith('abc123', true);
      });
    
      it('has a toggle to hide the companion area window in the left position', () => {
        const setCompanionAreaOpen = jest.fn();
    
        const wrapper = createWrapper({
          companionAreaOpen: true,
          position: 'left',
          setCompanionAreaOpen,
          sideBarOpen: true,
        });
    
        expect(wrapper.find(MiradorMenuButton).length).toBe(1);
        expect(wrapper.find(MiradorMenuButton).first().children(ArrowLeftIcon).length).toBe(1);
        expect(wrapper.find(MiradorMenuButton).prop('aria-expanded')).toBe(true);
    
        expect(wrapper.find('div.mirador-companion-windows').length).toBe(1);
        expect(wrapper.find('div.mirador-companion-windows').props().style.display).toBe('flex');
    
        wrapper.find(MiradorMenuButton).first().props().onClick(); // Trigger the onClick prop
    
        expect(setCompanionAreaOpen).toHaveBeenCalledWith('abc123', false);
      });
    
      it('does not show a toggle if the sidebar is collapsed', () => {
        const wrapper = createWrapper({
          companionAreaOpen: true,
          position: 'left',
          setCompanionAreaOpen: () => {},
          sideBarOpen: false,
        });
    
        expect(wrapper.find(MiradorMenuButton).length).toBe(0);
      });
    
      it('does not show a toggle in other positions', () => {
        const wrapper = createWrapper({
          companionAreaOpen: true,
          position: 'whatever',
          setCompanionAreaOpen: () => {},
          sideBarOpen: true,
        });
    
        expect(wrapper.find(MiradorMenuButton).length).toBe(0);
      });
    });