Skip to content
Snippets Groups Projects
Select Git revision
  • 073bb17e0b3251c7e786414dbb39c655b8e713ee
  • demo_ci_gitlab_pages default
  • demo_gitlab_ci
  • 5-images-in-annotations
  • 5-final-images
  • 5-chpk-images-in-annot
  • tetras-main protected
  • 5-rebase-images-in-annot
  • 5-wip-images-in-annot
  • tmp
  • 1-edit-annotations-on-videos
  • 5-old-images-in-annotations
  • old_demo_ci_gitlab_pages
  • images_annotations
  • wip
  • devsetup
  • wip-annot-video-ui
  • wip-annotations-on-videos
  • master
  • v0.4.0_react16
  • wip-debugging-annotations
21 results

AnnotationCreation.js

Blame
  • Forked from IIIF / Mirador / Mirador annotations
    Source project has a limited visibility.
    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');
      });
    });