From 5c6e0848aafae14dd6716ee5c400081aaccf2882 Mon Sep 17 00:00:00 2001 From: iLynette Date: Thu, 24 Mar 2022 11:25:29 +0300 Subject: [PATCH 1/5] Add unit tests for all components and logic files --- package-lock.json | 77 ++++++++- package.json | 3 +- src/components/Calculator.test.js | 10 ++ src/components/Home.test.js | 10 ++ src/components/Nav.test.js | 15 ++ src/components/Quotes.test.js | 10 ++ .../__snapshots__/Calculator.test.js.snap | 161 ++++++++++++++++++ .../__snapshots__/Home.test.js.snap | 70 ++++++++ src/components/__snapshots__/Nav.test.js.snap | 56 ++++++ .../__snapshots__/Quotes.test.js.snap | 130 ++++++++++++++ src/logic/calculate.test.js | 19 +++ src/logic/operate.test.js | 8 + src/logo.svg | 1 - src/reportWebVitals.js | 15 -- 14 files changed, 561 insertions(+), 24 deletions(-) create mode 100644 src/components/Calculator.test.js create mode 100644 src/components/Home.test.js create mode 100644 src/components/Nav.test.js create mode 100644 src/components/Quotes.test.js create mode 100644 src/components/__snapshots__/Calculator.test.js.snap create mode 100644 src/components/__snapshots__/Home.test.js.snap create mode 100644 src/components/__snapshots__/Nav.test.js.snap create mode 100644 src/components/__snapshots__/Quotes.test.js.snap create mode 100644 src/logic/calculate.test.js create mode 100644 src/logic/operate.test.js delete mode 100644 src/logo.svg delete mode 100644 src/reportWebVitals.js diff --git a/package-lock.json b/package-lock.json index ea817f1..3f2b582 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "0.1.0", "dependencies": { "@testing-library/jest-dom": "^5.16.2", - "@testing-library/react": "^12.1.4", "@testing-library/user-event": "^13.5.0", "big.js": "^6.1.1", "gh-pages": "^3.2.3", @@ -24,12 +23,14 @@ "@babel/eslint-parser": "^7.17.0", "@babel/plugin-syntax-jsx": "^7.16.7", "@babel/preset-react": "^7.16.7", + "@testing-library/react": "^12.1.4", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.3.0", + "react-test-renderer": "^17.0.2", "stylelint": "^13.13.1", "stylelint-config-standard": "^21.0.0", "stylelint-csstree-validator": "^1.9.0", @@ -3327,6 +3328,7 @@ "version": "12.1.4", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz", "integrity": "sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==", + "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.0.0", @@ -3596,7 +3598,8 @@ "node_modules/@types/prop-types": { "version": "15.7.4", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true }, "node_modules/@types/q": { "version": "1.5.5", @@ -3617,6 +3620,7 @@ "version": "17.0.40", "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz", "integrity": "sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==", + "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -3627,6 +3631,7 @@ "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.13.tgz", "integrity": "sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==", + "dev": true, "dependencies": { "@types/react": "*" } @@ -3647,7 +3652,8 @@ "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true }, "node_modules/@types/serve-index": { "version": "1.9.1", @@ -6019,7 +6025,8 @@ "node_modules/csstype": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "dev": true }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -14729,6 +14736,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -20509,6 +20544,7 @@ "version": "12.1.4", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz", "integrity": "sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==", + "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.0.0", @@ -20758,7 +20794,8 @@ "@types/prop-types": { "version": "15.7.4", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true }, "@types/q": { "version": "1.5.5", @@ -20779,6 +20816,7 @@ "version": "17.0.40", "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz", "integrity": "sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==", + "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -20789,6 +20827,7 @@ "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.13.tgz", "integrity": "sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==", + "dev": true, "requires": { "@types/react": "*" } @@ -20809,7 +20848,8 @@ "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true }, "@types/serve-index": { "version": "1.9.1", @@ -22548,7 +22588,8 @@ "csstype": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "dev": true }, "damerau-levenshtein": { "version": "1.0.8", @@ -28735,6 +28776,28 @@ } } }, + "react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + } + }, + "react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", diff --git a/package.json b/package.json index a67c34b..35ec2e8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "private": true, "dependencies": { "@testing-library/jest-dom": "^5.16.2", - "@testing-library/react": "^12.1.4", "@testing-library/user-event": "^13.5.0", "big.js": "^6.1.1", "gh-pages": "^3.2.3", @@ -46,12 +45,14 @@ "@babel/eslint-parser": "^7.17.0", "@babel/plugin-syntax-jsx": "^7.16.7", "@babel/preset-react": "^7.16.7", + "@testing-library/react": "^12.1.4", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.3.0", + "react-test-renderer": "^17.0.2", "stylelint": "^13.13.1", "stylelint-config-standard": "^21.0.0", "stylelint-csstree-validator": "^1.9.0", diff --git a/src/components/Calculator.test.js b/src/components/Calculator.test.js new file mode 100644 index 0000000..01f5e56 --- /dev/null +++ b/src/components/Calculator.test.js @@ -0,0 +1,10 @@ +import React from 'react'; +import renderer from 'react-test-renderer'; +import Calculator from './Calculator' + +it('renders correctly', () => { + const tree = renderer + .create() + .toJSON(); + expect(tree).toMatchSnapshot(); +}); \ No newline at end of file diff --git a/src/components/Home.test.js b/src/components/Home.test.js new file mode 100644 index 0000000..03c04f6 --- /dev/null +++ b/src/components/Home.test.js @@ -0,0 +1,10 @@ +import React from 'react'; +import renderer from 'react-test-renderer'; +import Home from './Home' + +it('renders correctly', () => { + const tree = renderer + .create() + .toTree(); + expect(tree).toMatchSnapshot(); +}); \ No newline at end of file diff --git a/src/components/Nav.test.js b/src/components/Nav.test.js new file mode 100644 index 0000000..786b7da --- /dev/null +++ b/src/components/Nav.test.js @@ -0,0 +1,15 @@ +import React from 'react'; +import renderer from 'react-test-renderer'; +import { BrowserRouter as Router } from 'react-router-dom'; +import Nav from './Nav'; + +it('renders correctly', () => { + const nav = renderer + .create( + +