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);
});