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

App.test.js

Blame
  • user avatar
    Jack Reed authored and Chris Beer committed
    a27e1342
    History
    App.test.js 2.68 KiB
    import React from 'react';
    import { shallow } from 'enzyme';
    import { ThemeProvider, StylesProvider } from '@material-ui/core/styles';
    import Fullscreen from 'react-full-screen';
    import AccessTokenSender from '../../../src/containers/AccessTokenSender';
    import AuthenticationSender from '../../../src/containers/AuthenticationSender';
    import { App } from '../../../src/components/App';
    import settings from '../../../src/config/settings';
    
    jest.unmock('react-i18next');
    
    /** */
    function createWrapper(props) {
      return shallow(
        <App
          language="en"
          isFullscreenEnabled={false}
          setWorkspaceFullscreen={() => {}}
          theme={settings.theme}
          translations={{}}
          t={k => k}
          {...props}
        />,
      );
    }
    
    describe('App', () => {
      it('should render all needed elements ', () => {
        const wrapper = createWrapper();
        expect(wrapper.find(ThemeProvider).length).toBe(1);
        expect(wrapper.find(StylesProvider).length).toBe(1);
        expect(wrapper.find(Fullscreen).length).toBe(1);
        expect(wrapper.find('Suspense').length).toBe(1);
        expect(wrapper.find(AuthenticationSender).length).toBe(1);
        expect(wrapper.find(AccessTokenSender).length).toBe(1);
      });
    
      it('sets up a theme based on the config passed in merged w/ MaterialUI', () => {
        const wrapper = createWrapper();
        const { theme } = wrapper.find(ThemeProvider).props();
        expect(theme.palette.type).toEqual('light');
        expect(theme.typography.useNextVariants).toBe(true);
        expect(Object.keys(theme).length).toBeGreaterThan(10);
      });
    
      it('sets up translations based on the config passed in', () => {
        const wrapper = createWrapper({ translations: { en: { off: 'on' } } });
        expect(wrapper.instance().i18n.t('off')).toEqual('on');
      });
    
      it('should pass setWorkspaceFullscreen to Fullscreen.onChange', () => {
        const mockFn = jest.fn();
        const wrapper = createWrapper({ setWorkspaceFullscreen: mockFn });
        expect(wrapper.find(Fullscreen).first().prop('onChange'))
          .toBe(mockFn);
      });
    
      it('should pass isFullscreenEnabled to Fullscreen.enabled', () => {
        let wrapper = createWrapper({ isFullscreenEnabled: false });
        expect(wrapper.find(Fullscreen).first().prop('enabled'))
          .toEqual(false);
    
        wrapper = createWrapper({ isFullscreenEnabled: true });
        expect(wrapper.find(Fullscreen).first().prop('enabled'))
          .toEqual(true);
      });
    
      describe('componentDidUpdate()', () => {
        it('changes the i18n language if the language prop has been updated', () => {
          const wrapper = createWrapper();
    
          expect(wrapper.instance().i18n.language).toEqual('en');
          wrapper.setProps({ language: 'de' });
          expect(wrapper.instance().i18n.language).toEqual('de');
        });
      });
    });