balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

index.test.js (5189B)


      1 import renderer from 'react-test-renderer';
      2 import {mount} from 'enzyme';
      3 import PreviewImport from '..';
      4 import {SingleItemProvider} from '../../../contexts/SingleItemContext';
      5 
      6 let templateMock = {
      7     openSitePreviewModal: jest.fn(),
      8     onImportTemplate: jest.fn(),
      9     spinner: null
     10 };
     11 let singleMock = {
     12     data: {ID: 1, url: 'url'},
     13     index: 0,
     14     pageData: null
     15 };
     16 let useEffect;
     17 const WrappedPreviewImport = (props) => {
     18     const {templateValue, singleValue} = props;
     19     return (
     20         <SingleItemProvider value={{...singleMock, ...singleValue}}>
     21             <PreviewImport />
     22         </SingleItemProvider>
     23     );
     24 }
     25 
     26 
     27 describe('Preview Import buttons', () => {
     28     it('1. renders correctly: snapshot testing', () => {
     29         const component = renderer.create(
     30             <WrappedPreviewImport />
     31         );
     32         const tree = component.toJSON();
     33         expect(tree).toMatchSnapshot();
     34     });
     35 
     36     describe('2. Testing props', () => {
     37         it('does not display preview button when data.url is not set', () => {
     38             const testRenderer = renderer.create(
     39                 <WrappedPreviewImport singleValue={{data: {url: null}}} />
     40             );
     41             const testInstance = testRenderer.root;
     42             expect(testInstance.findAllByProps({className: 'redux-templates-button preview-button'}).length).toBe(0);
     43         });
     44 
     45         it('displays preview button when data.url is set', () => {
     46             const testRenderer = renderer.create(
     47                 <WrappedPreviewImport singleValue={{data: {url: 'url'}}} />
     48             );
     49             const testInstance = testRenderer.root;
     50             expect(testInstance.findAllByProps({className: 'redux-templates-button preview-button'}).length).toBe(1);
     51         });
     52 
     53         it('displays import button with download icon with default context value', () => {
     54             const testRenderer = renderer.create(
     55                 <WrappedPreviewImport />
     56             );
     57             const testInstance = testRenderer.root;
     58             expect(testInstance.findAllByProps({className: 'fas fa-download'}).length).toBeGreaterThan(0);
     59         });
     60 
     61         it('displays import button with download icon with spinner null', () => {
     62             const testRenderer = renderer.create(
     63                 <WrappedPreviewImport templateValue={{spinner: null}} />
     64             );
     65             const testInstance = testRenderer.root;
     66             expect(testInstance.findAllByProps({className: 'fas fa-download'}).length).toBeGreaterThan(0);
     67         });
     68 
     69         it('displays import button with spinner icon when spinner and data.ID match', () => {
     70             const testRenderer = renderer.create(
     71                 <WrappedPreviewImport templateValue={{spinner: 1}} singleValue={{data: {ID: 1}}} />
     72             );
     73             const testInstance = testRenderer.root;
     74             expect(testInstance.findAllByProps({className: 'fas fa-spinner fa-pulse'}).length).toBeGreaterThan(0);
     75         })
     76     });
     77 
     78     describe('4. Testing Events', () => {
     79         const mockUseEffect = () => {
     80             useEffect.mockImplementationOnce(f => f());
     81         };
     82 
     83         beforeEach(() => {
     84             useEffect = jest.spyOn(React, 'useEffect');
     85         });
     86 
     87         it('click preview to call openSitePreviewModal of template modal context', () => {
     88             const component = mount(<WrappedPreviewImport />);
     89             const previewButton = component.find('.preview-button');
     90             previewButton.simulate('click');
     91             expect(templateMock.openSitePreviewModal).toHaveBeenCalled();
     92         });
     93 
     94         it('click preview to call openSitePreviewModal of template modal context with right parameter', () => {
     95             const component = mount(<WrappedPreviewImport singleValue={{index: 1, pageData: 'pagedata'}} />);
     96             const previewButton = component.find('.preview-button');
     97             previewButton.simulate('click');
     98             expect(templateMock.openSitePreviewModal).toHaveBeenCalledWith(1,'pagedata');
     99         });
    100 
    101         it('click download not to call onImportTemplate when other operation is going on(spinner is not null)', () => {
    102             const component = mount(<WrappedPreviewImport templateValue={{spinner: 1}} />);
    103             const downloadButton = component.find('.download-button');
    104             downloadButton.simulate('click');
    105             expect(templateMock.onImportTemplate).not.toHaveBeenCalled();
    106         });
    107 
    108         it('click download to call onImportTemplate of template modal context', () => {
    109             const component = mount(<WrappedPreviewImport />);
    110             const downloadButton = component.find('.download-button');
    111             downloadButton.simulate('click');
    112             expect(templateMock.onImportTemplate).toHaveBeenCalled();
    113         });
    114 
    115         it('click download to call onImportTemplate of template modal context with right parameter', () => {
    116             const component = mount(<WrappedPreviewImport singleValue={{data: {ID: 1}}} />);
    117             const downloadButton = component.find('.download-button');
    118             downloadButton.simulate('click');
    119             expect(templateMock.onImportTemplate).toHaveBeenCalledWith({ID: 1});
    120         });
    121 
    122     });
    123 
    124 
    125 });