From 310fa608b1e5cd0f5d882664debf5bcca877f6e3 Mon Sep 17 00:00:00 2001 From: xidedix Date: Mon, 26 Nov 2018 19:54:54 +0100 Subject: [PATCH] test: add coverage --- src/App.test.js | 25 ++------ src/views/Base/Collapses/Collapses.js | 5 +- src/views/Base/Collapses/Collapses.test.js | 64 +++++++++++++++++++ src/views/Base/Dropdowns/Dropdowns.test.js | 2 + src/views/Base/Forms/Forms.test.js | 30 +++++++++ src/views/Base/ListGroups/ListGroups.test.js | 10 +++ src/views/Base/Navs/Navs.test.js | 10 +++ .../ButtonDropdowns/ButtonDropdowns.js | 12 ++-- .../ButtonDropdowns/ButtonDropdowns.test.js | 11 ++++ .../Buttons/ButtonGroups/ButtonGroups.js | 4 +- .../Buttons/ButtonGroups/ButtonGroups.test.js | 10 +++ 11 files changed, 155 insertions(+), 28 deletions(-) diff --git a/src/App.test.js b/src/App.test.js index 11afb31..7af377d 100644 --- a/src/App.test.js +++ b/src/App.test.js @@ -1,20 +1,9 @@ -// import React from 'react'; -// import ReactDOM from 'react-dom'; -// import App from './App'; -// -// jest.mock('react-chartjs-2', () => ({ -// Line: () => null, -// Polar: () => null, -// Pie: () => null, -// Radar: () => null, -// Bar: () => null, -// Doughnut: () => null, -// })); +import React from 'react'; +import {shallow} from 'enzyme/build'; +import App from './App'; -// it('renders without crashing', () => { -// const div = document.createElement('div'); -// ReactDOM.render(, div); -// ReactDOM.unmountComponentAtNode(div); -// }); -it('', () => {}) +it('mounts without crashing', () => { + const wrapper = shallow(); + wrapper.unmount() +}); diff --git a/src/views/Base/Collapses/Collapses.js b/src/views/Base/Collapses/Collapses.js index 0fd28c2..aab9258 100644 --- a/src/views/Base/Collapses/Collapses.js +++ b/src/views/Base/Collapses/Collapses.js @@ -103,7 +103,8 @@ class Collapses extends Component { - + +
Current state: {this.state.status}
@@ -122,7 +123,7 @@ class Collapses extends Component { - + diff --git a/src/views/Base/Collapses/Collapses.test.js b/src/views/Base/Collapses/Collapses.test.js index 0a6cf6d..80d5434 100644 --- a/src/views/Base/Collapses/Collapses.test.js +++ b/src/views/Base/Collapses/Collapses.test.js @@ -1,9 +1,73 @@ import React from 'react'; import ReactDOM from 'react-dom'; import Collapses from './Collapses'; +import {mount} from 'enzyme/build'; it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); + +describe('toggle clicks', function() { + it('collapse without crashing', () => { + const wrapper = mount(); + let collapse = wrapper.find('#toggleCollapse1').at(0); + collapse.simulate('click'); + expect(wrapper.state().collapse).toEqual(true); + collapse.simulate('click'); + expect(wrapper.state().collapse).toEqual(false); + collapse.simulate('click'); + expect(wrapper.state().collapse).toEqual(true); + wrapper.unmount() + }); + it('fade without crashing', () => { + const wrapper = mount(); + let fade = wrapper.find('#toggleFade1').at(0); + fade.simulate('click'); + expect(wrapper.state().fadeIn).toEqual(false); + fade.simulate('click'); + expect(wrapper.state().fadeIn).toEqual(true); + wrapper.unmount() + }); + it('accordion without crashing', () => { + const wrapper = mount(); + let accordion = wrapper.find('[aria-controls="collapseOne"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().accordion[0]).toEqual(false); + expect(wrapper.state().accordion[1]).toEqual(false); + expect(wrapper.state().accordion[2]).toEqual(false); + accordion = wrapper.find('[aria-controls="collapseTwo"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().accordion[0]).toEqual(false); + expect(wrapper.state().accordion[1]).toEqual(true); + expect(wrapper.state().accordion[2]).toEqual(false); + accordion = wrapper.find('[aria-controls="collapseThree"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().accordion[0]).toEqual(false); + expect(wrapper.state().accordion[1]).toEqual(false); + expect(wrapper.state().accordion[2]).toEqual(true); + accordion = wrapper.find('[aria-controls="collapseOne"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().accordion[0]).toEqual(true); + expect(wrapper.state().accordion[1]).toEqual(false); + expect(wrapper.state().accordion[2]).toEqual(false); + wrapper.unmount() + }); + it('custom without crashing', () => { + const wrapper = mount(); + let accordion = wrapper.find('[aria-controls="exampleAccordion1"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().custom[0]).toEqual(false); + expect(wrapper.state().custom[1]).toEqual(false); + accordion = wrapper.find('[aria-controls="exampleAccordion1"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().custom[0]).toEqual(true); + expect(wrapper.state().custom[1]).toEqual(false); + accordion = wrapper.find('[aria-controls="exampleAccordion2"]').at(0); + accordion.simulate('click'); + expect(wrapper.state().custom[0]).toEqual(false); + expect(wrapper.state().custom[1]).toEqual(true); + wrapper.unmount() + }); +}); diff --git a/src/views/Base/Dropdowns/Dropdowns.test.js b/src/views/Base/Dropdowns/Dropdowns.test.js index fa26163..ecc269f 100644 --- a/src/views/Base/Dropdowns/Dropdowns.test.js +++ b/src/views/Base/Dropdowns/Dropdowns.test.js @@ -7,6 +7,8 @@ it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); +}); +it('toggle click without crashing', () => { const wrapper = mount(); for (let i=0; i<5; i++) { let Dropdown = wrapper.find('button.dropdown-toggle').at(i); diff --git a/src/views/Base/Forms/Forms.test.js b/src/views/Base/Forms/Forms.test.js index bb2396a..952f0a9 100644 --- a/src/views/Base/Forms/Forms.test.js +++ b/src/views/Base/Forms/Forms.test.js @@ -1,9 +1,39 @@ import React from 'react'; import ReactDOM from 'react-dom'; import Forms from './Forms'; +import {mount} from 'enzyme/build'; it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); + +describe('toggle clicks', function() { + it('dropdowns without crashing', () => { + const wrapper = mount(); + for (let i = 0; i < 4; i++) { + let count = i === 0 ? 'first' : i === 1 ? 'second' : i === 2 ? 'third' : 'fourth' + let Dropdown = wrapper.find('button.dropdown-toggle').at(i); + Dropdown.simulate('click'); + expect(wrapper.state()[count]).toEqual(true); + } + wrapper.unmount() + }); + it('collapse without crashing', () => { + const wrapper = mount(); + let collapse = wrapper.find('button.btn-minimize').at(0); + collapse.simulate('click'); + expect(wrapper.state().collapse).toEqual(false); + collapse.simulate('click'); + expect(wrapper.state().collapse).toEqual(true); + wrapper.unmount() + }); + it('fade without crashing', () => { + const wrapper = mount(); + let fade = wrapper.find('button.btn-close').at(0); + fade.simulate('click'); + expect(wrapper.state().fadeIn).toEqual(false); + wrapper.unmount() + }); +}) diff --git a/src/views/Base/ListGroups/ListGroups.test.js b/src/views/Base/ListGroups/ListGroups.test.js index 9923f32..6b9f398 100644 --- a/src/views/Base/ListGroups/ListGroups.test.js +++ b/src/views/Base/ListGroups/ListGroups.test.js @@ -1,9 +1,19 @@ import React from 'react'; import ReactDOM from 'react-dom'; import ListGroups from './ListGroups'; +import {mount} from 'enzyme/build'; it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); +it('toggle click without crashing', () => { + const wrapper = mount(); + for (let i=0; i<4; i++) { + let ListGroup = wrapper.find('#list-tab .list-group-item-action.list-group-item').at(i); + ListGroup.simulate('click'); + expect(wrapper.state().activeTab).toEqual(i); + } + wrapper.unmount() +}); diff --git a/src/views/Base/Navs/Navs.test.js b/src/views/Base/Navs/Navs.test.js index 3193dab..d00d930 100644 --- a/src/views/Base/Navs/Navs.test.js +++ b/src/views/Base/Navs/Navs.test.js @@ -1,9 +1,19 @@ import React from 'react'; import ReactDOM from 'react-dom'; import Navs from './Navs'; +import {mount} from 'enzyme/build'; it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); +it('toggle click without crashing', () => { + const wrapper = mount(); + for (let i=0; i<2; i++) { + let Nav = wrapper.find('a.dropdown-toggle').at(i); + Nav.simulate('click'); + expect(wrapper.state().dropdownOpen[i]).toEqual(true); + } + wrapper.unmount() +}); diff --git a/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.js b/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.js index 337fcb5..4bc5243 100644 --- a/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.js +++ b/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.js @@ -205,7 +205,7 @@ class ButtonDropdowns extends Component { Dropdown directions - { this.toggle(15); }}> + { this.toggle(13); }}> Direction Up @@ -216,7 +216,7 @@ class ButtonDropdowns extends Component { Another Action - { this.toggle(16); }}> + { this.toggle(14); }}> Direction Left @@ -227,7 +227,7 @@ class ButtonDropdowns extends Component { Another Action - { this.toggle(17); }}> + { this.toggle(15); }}> Direction Right @@ -238,7 +238,7 @@ class ButtonDropdowns extends Component { Another Action - { this.toggle(18); }}> + { this.toggle(16); }}> Default Down @@ -256,7 +256,7 @@ class ButtonDropdowns extends Component { Button Dropdown sizing - { this.toggle(13); }}> + { this.toggle(17); }}> Large Button @@ -267,7 +267,7 @@ class ButtonDropdowns extends Component { Another Action - { this.toggle(14); }}> + { this.toggle(18); }}> Small Button diff --git a/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.test.js b/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.test.js index 9c44fb1..26d3c61 100644 --- a/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.test.js +++ b/src/views/Buttons/ButtonDropdowns/ButtonDropdowns.test.js @@ -1,5 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { mount } from 'enzyme' import ButtonDropdowns from './ButtonDropdowns'; it('renders without crashing', () => { @@ -7,3 +8,13 @@ it('renders without crashing', () => { ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); +it('toggle click without crashing', () => { + const wrapper = mount(); + for (let i=0; i<19; i++) { + let ButtonDropdown = wrapper.find('button.dropdown-toggle').at(i); + ButtonDropdown.simulate('click'); + expect(wrapper.state().dropdownOpen[i]).toEqual(true); + } + wrapper.unmount() +}); + diff --git a/src/views/Buttons/ButtonGroups/ButtonGroups.js b/src/views/Buttons/ButtonGroups/ButtonGroups.js index 454c547..bf18225 100644 --- a/src/views/Buttons/ButtonGroups/ButtonGroups.js +++ b/src/views/Buttons/ButtonGroups/ButtonGroups.js @@ -66,7 +66,7 @@ class ButtonGroups extends Component { - { this.toggle(1); }}> + { this.toggle(0); }}> Dropdown @@ -135,7 +135,7 @@ class ButtonGroups extends Component { - { this.toggle(0); }}> + { this.toggle(1); }}> Dropdown diff --git a/src/views/Buttons/ButtonGroups/ButtonGroups.test.js b/src/views/Buttons/ButtonGroups/ButtonGroups.test.js index 6ab857b..72186c4 100644 --- a/src/views/Buttons/ButtonGroups/ButtonGroups.test.js +++ b/src/views/Buttons/ButtonGroups/ButtonGroups.test.js @@ -1,9 +1,19 @@ import React from 'react'; import ReactDOM from 'react-dom'; import ButtonGroups from './ButtonGroups'; +import {mount} from 'enzyme/build'; it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); +it('toggle click without crashing', () => { + const wrapper = mount(); + for (let i=0; i<2; i++) { + let ButtonGroup = wrapper.find('button.dropdown-toggle').at(i); + ButtonGroup.simulate('click'); + expect(wrapper.state().dropdownOpen[i]).toEqual(true); + } + wrapper.unmount() +});