All files / nexshop-web-contents/spec/component/preview/scene scene-preview-spec.js

100% Statements 41/41
100% Branches 0/0
100% Functions 14/14
100% Lines 41/41
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 851x 1x 1x 1x 1x 1x 1x 1x   1x       1x       1x 1x 1x       1x       1x 7x                 7x     1x 7x     1x 1x 1x     1x 1x     1x 1x     1x 1x       1x 1x 1x 1x     1x 1x 1x 1x       1x 1x 1x     1x 1x      
import React from 'react';
import {expect} from 'chai';
import {shallow} from "enzyme";
import sinon from "sinon";
import configureStore from 'redux-mock-store';
import ScenePreview from "../../../../src/component/preview/scene/scene-preview";
import ScenePreviewHeaderView from "../../../../src/component/preview/scene/scene-preview-header-view";
import ScenePreviewDetailView from "../../../../src/component/preview/scene/scene-preview-detail-view";
 
describe('Scene Preview Spec', () => {
    let wrapper;
    let mockStore;
 
    let mockHistory = {
        goBack: sinon.spy()
    };
 
    const SCENE = {panels: [{id: 'p1'}, {id: 'p2'}]};
    const SCENE_NAME = 'some scene';
    const PREVIEW_WINDOW_SIZE = {
        width: 1920, height: 1080
    };
 
    const SCENE_LAYOUT_SIZE = {
        width: 960, height: 540
    };
 
    beforeEach(() => {
        mockStore = configureStore()({
            scene: {
                name: SCENE_NAME,
                scene: SCENE,
                previewWindowSize: PREVIEW_WINDOW_SIZE,
                sceneLayoutSize: SCENE_LAYOUT_SIZE,
            },
        });
 
        wrapper = shallow(<ScenePreview store={mockStore} history={mockHistory}/>).dive();
    });
 
    afterEach(() => {
        mockHistory.goBack.reset();
    });
 
    describe('Mapping props', () => {
        it('has scene', () => {
            expect(wrapper.instance().props.scene).to.deep.equal(SCENE);
        });
 
        it('has name', () => {
            expect(wrapper.instance().props.name).to.deep.equal(SCENE_NAME);
        });
 
        it('has previewWindowSize', () => {
            expect(wrapper.instance().props.previewWindowSize).to.deep.equal(PREVIEW_WINDOW_SIZE);
        });
 
        it('has sceneLayoutSize', () => {
            expect(wrapper.instance().props.sceneLayoutSize).to.deep.equal(SCENE_LAYOUT_SIZE);
        });
    });
 
    describe('passes props', () => {
        it('name and onClickClose props to ScenePreviewHeaderView', () => {
            expect(wrapper.find(ScenePreviewHeaderView).prop('name')).to.equal(SCENE_NAME);
            expect(wrapper.find(ScenePreviewHeaderView).prop('onClickClose')).to.equal(wrapper.instance().onClickClose);
        });
 
        it('scene, previewWindowSize and sceneLayoutSize props to ScenePreviewDetailView', () => {
            expect(wrapper.find(ScenePreviewDetailView).prop('scene')).to.deep.equal(SCENE);
            expect(wrapper.find(ScenePreviewDetailView).prop('previewWindowSize')).to.deep.equal(PREVIEW_WINDOW_SIZE);
            expect(wrapper.find(ScenePreviewDetailView).prop('sceneLayoutSize')).to.deep.equal(SCENE_LAYOUT_SIZE);
        });
    });
 
    describe('onClickClose', () => {
        beforeEach(() => {
            wrapper.instance().onClickClose();
        });
 
        it('calls history.goBack', () => {
            expect(mockHistory.goBack.called).to.be.true;
        });
    });
});