UNPKG

nexshop-web-skeleton

Version:

Nexshop Web Skeleton Project

456 lines (455 loc) 14.1 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for nexshop-web-skeleton/spec/component/root-component-spec.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../../prettify.css" /> <link rel="stylesheet" href="../../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../../index.html">All files</a> / <a href="index.html">nexshop-web-skeleton/spec/component</a> root-component-spec.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Statements</span> <span class='fraction'>70/70</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Branches</span> <span class='fraction'>0/0</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>25/25</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Lines</span> <span class='fraction'>70/70</span> </div> </div> </div> <div class='status-line high'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131</td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">12x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">12x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">12x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">12x</span> <span class="cline-any cline-yes">12x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">8x</span> <span class="cline-any cline-yes">8x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React from 'react'; import {expect} from 'chai'; import sinon from "sinon"; import {shallow} from "enzyme"; import configureStore from 'redux-mock-store'; import {Router} from "react-router"; import thunk from 'redux-thunk' import {DiscardConfirm} from 'nexshop-web-alert'; import {contentsActions} from 'nexshop-web-store'; import RootComponent from '../../src/component/root-component'; import NotificationPopup from '../../src/component/popup/notification-popup'; &nbsp; describe('Root Component Spec', () =&gt; { let wrapper; let mockStore; let mockHistory = {}; &nbsp; const createRootComponent = (store) =&gt; { return shallow(&lt;RootComponent store={store} history={mockHistory}/&gt;); }; &nbsp; beforeEach(() =&gt; { sinon.stub(contentsActions, 'fetchAllUnderRootFolderAsync').returns({ type: 'SOME_ACTION' }); sinon.stub(contentsActions, 'fetchRootFolderAsync').returns({ type: 'ANOTHER_ACTION' }); }); &nbsp; afterEach(() =&gt; { contentsActions.fetchAllUnderRootFolderAsync.restore(); contentsActions.fetchRootFolderAsync.restore(); }); &nbsp; describe('without notification popup', () =&gt; { beforeEach(() =&gt; { mockStore = configureStore([thunk])({popup: {}, nexFetch: {isLoading: false}}); wrapper = createRootComponent(mockStore).dive(); }); &nbsp; describe('rendering', () =&gt; { it('Router has history created in constructor', () =&gt; { expect(wrapper.find(Router).prop('history')).to.equal(mockHistory); }); &nbsp; it('DiscardConfirm has history created in constructor', () =&gt; { expect(wrapper.find(DiscardConfirm).prop('history')).to.equal(mockHistory); }); &nbsp; it('does not render NotificationPopup component', () =&gt; { expect(wrapper.find(NotificationPopup).length).to.equal(0); }); }); &nbsp; describe('componentWillMount', () =&gt; { it('calls fetchAllUnderRootFolderAsync action creator', () =&gt; { expect(contentsActions.fetchAllUnderRootFolderAsync.called).to.be.true; }); &nbsp; it('calls store.dispatch with fetchAllUnderRootFolderAsync', () =&gt; { expect(mockStore.getActions()[0]).to.deep.equal({type: 'SOME_ACTION'}); }); &nbsp; it('calls fetchRootFolderAsync action creator', () =&gt; { expect(contentsActions.fetchRootFolderAsync.called).to.be.true; }); &nbsp; it('calls store.dispatch with fetchRootFolderAsync', () =&gt; { expect(mockStore.getActions()[1]).to.deep.equal({type: 'ANOTHER_ACTION'}); }); }); &nbsp; it('calls store.dispatch with closePopup Actions', () =&gt; { mockStore.clearActions(); &nbsp; wrapper.instance().closeNotificationPopup(); expect(mockStore.getActions()[0]).to.deep.equal({type: 'SCHEDULE_CLOSE_POPUP', name: 'notification'}); }); }); &nbsp; describe('with notification popup', () =&gt; { beforeEach(() =&gt; { mockStore = configureStore([thunk])({ popup: {notification: {visibility: true, message: 'some text'}}, nexFetch: {isLoading: false} }); wrapper = createRootComponent(mockStore).dive(); mockStore.dispatch({type: 'DUMMY'}); }); &nbsp; describe('rendering', () =&gt; { it('shows NotificationPopup component', () =&gt; { const notificationPopup = wrapper.find(NotificationPopup); &nbsp; expect(notificationPopup.length).to.equal(1); expect(notificationPopup.props().text).to.equal('some text'); expect(notificationPopup.props().onClose).to.equal(wrapper.instance().closeNotificationPopup); }); }); &nbsp; describe('componentWillMount', () =&gt; { it('sets notificationPopupVisibility to true', () =&gt; { expect(wrapper.state('notificationPopupVisibility')).to.be.true; }); }); }); &nbsp; describe('show spinner spec', () =&gt; { it('if isLoading is false, disappear CircularProgress component.', () =&gt; { mockStore = configureStore([thunk])({ popup: {notification: {visibility: true, message: 'some text'}}, nexFetch: {isLoading: false} }); wrapper = createRootComponent(mockStore).dive(); &nbsp; expect(wrapper.find('.spinner-wrapper')).to.length(0); }); &nbsp; it('if isLoading is true, show CircularProgress component.', () =&gt; { mockStore = configureStore([thunk])({ popup: {notification: {visibility: false, message: undefined}}, nexFetch: {isLoading: true} }); wrapper = createRootComponent(mockStore).dive(); &nbsp; expect(wrapper.find('.spinner-wrapper')).to.length(1); }); &nbsp; }); });</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri Dec 15 2017 10:10:17 GMT+0900 (KST) </div> </div> <script src="../../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../../sorter.js"></script> </body> </html>