From 7632881468259e286c92f9dc614ba27bbd834e1e Mon Sep 17 00:00:00 2001 From: xidedix Date: Fri, 23 Nov 2018 18:37:44 +0100 Subject: [PATCH] test: more coverage --- package.json | 11 ++++++++++- .../__tests__/DefaultHeader.test.js | 3 ++- .../__tests__/DefaultLayout.test.js | 10 ++++++++++ src/setupTests.js | 11 +++++++++++ src/views/Base/Dropdowns/Dropdowns.test.js | 16 ++++++++++++++++ src/views/Pages/Login/Login.test.js | 3 ++- src/views/Theme/Colors/Colors.test.js | 4 ++-- src/views/Users/User.test.js | 15 +++++++++++++++ src/views/Users/Users.test.js | 3 ++- 9 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 src/containers/DefaultLayout/__tests__/DefaultLayout.test.js create mode 100644 src/views/Users/User.test.js diff --git a/package.json b/package.json index b175ba9..a109421 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", + "test:cov": "react-scripts test --coverage", "test:debug": "react-scripts --inspect-brk test --runInBand", "eject": "react-scripts eject" }, @@ -58,5 +59,13 @@ "not dead", "not ie <= 9", "not op_mini all" - ] + ], + "jest": { + "collectCoverageFrom": [ + "src/**/*.{js,jsx}", + "!**/*index.js", + "!src/serviceWorker.js", + "!src/polyfill.js" + ] + } } diff --git a/src/containers/DefaultLayout/__tests__/DefaultHeader.test.js b/src/containers/DefaultLayout/__tests__/DefaultHeader.test.js index 4bd014b..76887e0 100644 --- a/src/containers/DefaultLayout/__tests__/DefaultHeader.test.js +++ b/src/containers/DefaultLayout/__tests__/DefaultHeader.test.js @@ -1,9 +1,10 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { MemoryRouter } from 'react-router-dom'; import DefaultHeader from '../DefaultHeader'; it('renders without crashing', () => { const div = document.createElement('div'); - ReactDOM.render(, div); + ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); diff --git a/src/containers/DefaultLayout/__tests__/DefaultLayout.test.js b/src/containers/DefaultLayout/__tests__/DefaultLayout.test.js new file mode 100644 index 0000000..c0e1788 --- /dev/null +++ b/src/containers/DefaultLayout/__tests__/DefaultLayout.test.js @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import {MemoryRouter, Route} from 'react-router-dom'; +import DefaultLayout from '../DefaultLayout'; + +it('renders without crashing', () => { + const div = document.createElement('div'); + ReactDOM.render(, div); + ReactDOM.unmountComponentAtNode(div); +}); diff --git a/src/setupTests.js b/src/setupTests.js index 82edfc9..8332054 100644 --- a/src/setupTests.js +++ b/src/setupTests.js @@ -2,3 +2,14 @@ import { configure } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; configure({ adapter: new Adapter() }); + +if (global.document) { + document.createRange = () => ( { + setStart: () => {}, + setEnd: () => {}, + commonAncestorContainer: { + nodeName: 'BODY', + ownerDocument: document, + }, + }); +} diff --git a/src/views/Base/Dropdowns/Dropdowns.test.js b/src/views/Base/Dropdowns/Dropdowns.test.js index 0f2d851..fa26163 100644 --- a/src/views/Base/Dropdowns/Dropdowns.test.js +++ b/src/views/Base/Dropdowns/Dropdowns.test.js @@ -1,9 +1,25 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { mount } from 'enzyme' import Dropdowns from './Dropdowns'; it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); + const wrapper = mount(); + for (let i=0; i<5; i++) { + let Dropdown = wrapper.find('button.dropdown-toggle').at(i); + Dropdown.simulate('click'); + expect(wrapper.state().dropdownOpen[i]).toEqual(true); + } + for (let i=0; i<2; i++) { + let Dropdown = wrapper.find('[data-toggle="dropdown"]').at(0); + Dropdown.simulate('click'); + expect(wrapper.state().dropdownOpen[5]).toEqual(true); + let DropdownItem = wrapper.find('div.dropdown-menu > .dropdown-item').at(i); + DropdownItem.simulate('click'); + expect(wrapper.state().dropdownOpen[5]).toEqual(false); + } + wrapper.unmount() }); diff --git a/src/views/Pages/Login/Login.test.js b/src/views/Pages/Login/Login.test.js index 5d5bbf4..b10e7b8 100644 --- a/src/views/Pages/Login/Login.test.js +++ b/src/views/Pages/Login/Login.test.js @@ -1,9 +1,10 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { MemoryRouter } from 'react-router-dom'; import Login from './Login'; it('renders without crashing', () => { const div = document.createElement('div'); - ReactDOM.render(, div); + ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); diff --git a/src/views/Theme/Colors/Colors.test.js b/src/views/Theme/Colors/Colors.test.js index 754245e..dbed6eb 100644 --- a/src/views/Theme/Colors/Colors.test.js +++ b/src/views/Theme/Colors/Colors.test.js @@ -1,7 +1,7 @@ import React from 'react'; import Colors from './Colors'; -import { shallow } from 'enzyme' +import { mount } from 'enzyme' it('renders without crashing', () => { - shallow(); + mount(); }); diff --git a/src/views/Users/User.test.js b/src/views/Users/User.test.js new file mode 100644 index 0000000..df0e3f4 --- /dev/null +++ b/src/views/Users/User.test.js @@ -0,0 +1,15 @@ +import React from 'react'; +import {MemoryRouter} from 'react-router-dom'; +import { mount } from 'enzyme' +import User from './User'; + + +it('renders without crashing', () => { + const wrapper = mount( + + + + ); + expect(wrapper.containsMatchingElement(Samppa Nori)).toEqual(true) + wrapper.unmount() +}); diff --git a/src/views/Users/Users.test.js b/src/views/Users/Users.test.js index faab45e..946fec6 100644 --- a/src/views/Users/Users.test.js +++ b/src/views/Users/Users.test.js @@ -1,9 +1,10 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { MemoryRouter } from 'react-router-dom'; import Users from './Users'; it('renders without crashing', () => { const div = document.createElement('div'); - ReactDOM.render(, div); + ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); });