Skip to content
Snippets Groups Projects
Select Git revision
  • cf520c2830fc442d86d7c32e3a4a0ab5ce7233e9
  • 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

Display.test.js

Blame
  • LanguageSettings.test.js 2.24 KiB
    import { shallow } from 'enzyme';
    import ListItemText from '@material-ui/core/ListItemText';
    import MenuItem from '@material-ui/core/MenuItem';
    import CheckIcon from '@material-ui/icons/CheckSharp';
    import { LanguageSettings } from '../../../src/components/LanguageSettings';
    
    /**
     * Helper function to create a shallow wrapper around LanguageSettings
     */
    function createWrapper(props) {
      return shallow(
        <LanguageSettings
          handleClick={() => {}}
          languages={{}}
          {...props}
        />,
      );
    }
    
    describe('LanguageSettings', () => {
      let wrapper;
      const languages = [
        {
          current: true,
          label: 'Deutsch',
          locale: 'de',
        },
        {
          current: false,
          label: 'English',
          locale: 'en',
        },
      ];
    
      it('renders a list with a list item for each language passed in props', () => {
        wrapper = createWrapper({ languages });
    
        expect(wrapper.find(MenuItem).length).toBe(2);
      });
    
      it('non-active list items are buttons (and active are not)', () => {
        wrapper = createWrapper({ languages });
    
        expect(
          wrapper
            .find(MenuItem)
            .first() // The German / active button
            .prop('button'),
        ).toBe(false);
    
        expect(
          wrapper
            .find(MenuItem)
            .last() // The English / non-active button
            .prop('button'),
        ).toBe(true);
      });
    
      it('renders the check icon when the active prop returns true', () => {
        wrapper = createWrapper({ languages });
    
        expect(
          wrapper
            .find(MenuItem)
            .first()
            .find(CheckIcon)
            .length,
        ).toBe(1);
      });
    
      it('renders the language value in an Typography element wrapped in a ListItemText', () => {
        wrapper = createWrapper({ languages });
    
        const firstListText = wrapper
          .find(MenuItem)
          .first()
          .find(ListItemText)
          .children()
          .text();
    
        expect(firstListText).toEqual('Deutsch');
      });
    
      it('triggers the handleClick prop when clicking a list item', () => {
        const mockHandleClick = jest.fn();
        wrapper = createWrapper({
          handleClick: mockHandleClick,
          languages,
        });
    
        wrapper.find(MenuItem).last().simulate('click');
    
        expect(mockHandleClick).toHaveBeenCalledTimes(1);
        expect(mockHandleClick).toHaveBeenCalledWith('en');
      });
    });