From 5fec0a19f385619be158993e793449800503b464 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Wed, 30 Oct 2019 10:12:39 -0400 Subject: [PATCH 01/15] Add a smoke test for options --- src/options/index.js | 6 ++++-- src/options/index.test.js | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/options/index.test.js diff --git a/src/options/index.js b/src/options/index.js index f1049520..f5573fbf 100644 --- a/src/options/index.js +++ b/src/options/index.js @@ -13,7 +13,7 @@ const defaultOptions = { useTabs: false }; -function App() { +export default function App() { const [options, setOptions] = useState(); useEffect(() => { @@ -154,4 +154,6 @@ function App() { ) : null; } -ReactDOM.render(, document.getElementById("root")); +if (process.env.NODE_ENV !== "test") { + ReactDOM.render(, document.getElementById("root")); +} diff --git a/src/options/index.test.js b/src/options/index.test.js new file mode 100644 index 00000000..7e725026 --- /dev/null +++ b/src/options/index.test.js @@ -0,0 +1,23 @@ +import App from "."; +import React from "react"; +import ReactDOM from "react-dom"; +import { act } from "react-dom/test-utils"; + +window.chrome = { + storage: { + sync: { + get(callback) { + setTimeout(() => callback({})); + }, + set() {} + } + } +}; + +test("Options render", () => { + const root = document.createElement("div"); + document.body.appendChild(root); + act(() => { + ReactDOM.render(, root); + }); +}); From 5893ee7ad1714aaa3a3f7c175e6dc5e4396e978a Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Wed, 30 Oct 2019 10:58:58 -0400 Subject: [PATCH 02/15] Render React app outside of DOM --- src/options/index.test.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/options/index.test.js b/src/options/index.test.js index 7e725026..20f48497 100644 --- a/src/options/index.test.js +++ b/src/options/index.test.js @@ -15,9 +15,8 @@ window.chrome = { }; test("Options render", () => { - const root = document.createElement("div"); - document.body.appendChild(root); + const container = document.createElement("div"); act(() => { - ReactDOM.render(, root); + ReactDOM.render(, container); }); }); From 48ee707214c7bd69baad0dcc8e928b89feb71f1e Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Wed, 30 Oct 2019 11:16:38 -0400 Subject: [PATCH 03/15] Use React testing library --- .eslintrc.json | 2 +- package.json | 2 + src/options/index.test.js | 8 +-- yarn.lock | 128 +++++++++++++++++++++++++++++++++++--- 4 files changed, 124 insertions(+), 16 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 06f41caa..c77d148c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -55,7 +55,7 @@ { "files": ["src/**/*"], "plugins": ["react-hooks"], - "extends": ["plugin:react/recommended"], + "extends": ["plugin:react/recommended", "plugin:testing-library/react"], "env": { "browser": true, "node": false diff --git a/package.json b/package.json index 421e31d5..e813f45f 100644 --- a/package.json +++ b/package.json @@ -27,12 +27,14 @@ "@babel/plugin-transform-modules-commonjs": "7.7.0", "@babel/preset-react": "7.7.0", "@ffflorian/jszip-cli": "3.0.2", + "@testing-library/react": "9.3.0", "babel-loader": "8.0.6", "eslint": "6.6.0", "eslint-config-prettier": "6.5.0", "eslint-plugin-prettier": "3.1.1", "eslint-plugin-react": "7.16.0", "eslint-plugin-react-hooks": "2.2.0", + "eslint-plugin-testing-library": "1.3.0", "husky": "3.0.9", "jest": "24.9.0", "lint-staged": "9.4.2", diff --git a/src/options/index.test.js b/src/options/index.test.js index 20f48497..7538d225 100644 --- a/src/options/index.test.js +++ b/src/options/index.test.js @@ -1,7 +1,6 @@ import App from "."; import React from "react"; -import ReactDOM from "react-dom"; -import { act } from "react-dom/test-utils"; +import { render } from "@testing-library/react"; window.chrome = { storage: { @@ -15,8 +14,5 @@ window.chrome = { }; test("Options render", () => { - const container = document.createElement("div"); - act(() => { - ReactDOM.render(, container); - }); + render(); }); diff --git a/yarn.lock b/yarn.lock index caf2a451..53c1c35b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -120,7 +120,7 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.7.2": +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.7.0", "@babel/parser@^7.7.2": version "7.7.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.2.tgz#ea8334dc77416bfd9473eb470fd00d8245b3943b" integrity sha512-DDaR5e0g4ZTb9aP7cpSZLkACEBdoLGwJDWgHtBhrGX7Q1RjhdoMOfexICj5cqTAtpowjGQWfcvfnQG7G2kAB5w== @@ -192,7 +192,23 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/template@^7.4.0", "@babel/template@^7.7.0": +"@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" + integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.4.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" + integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + +"@babel/template@^7.7.0": version "7.7.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.0.tgz#4fadc1b8e734d97f56de39c77de76f2562e597d0" integrity sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ== @@ -216,7 +232,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.0", "@babel/types@^7.7.2": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.6.0", "@babel/types@^7.7.0", "@babel/types@^7.7.2": version "7.7.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.2.tgz#550b82e5571dcd174af576e23f0adba7ffc683f7" integrity sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA== @@ -421,6 +437,32 @@ dependencies: any-observable "^0.3.0" +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" + integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== + +"@testing-library/dom@^6.3.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.10.0.tgz#c7e7d613faca159846379949db65abf8ab214999" + integrity sha512-8Tq4aRDeukB+6WE0rVXO1TlS38uu05CpbHgEa9SLR3JWuBajOVEPk9HgOfOFOqWqoo5nEIthXBgLobbofEhuUg== + dependencies: + "@babel/runtime" "^7.6.2" + "@sheerun/mutationobserver-shim" "^0.3.2" + "@types/testing-library__dom" "^6.0.0" + aria-query "3.0.0" + pretty-format "^24.9.0" + wait-for-expect "^3.0.0" + +"@testing-library/react@9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.3.0.tgz#1dabf46d1ea018a1c89acecc0e7b86859b34c0f8" + integrity sha512-FTPCwmLo0tLtP50Au2uGz4/N1BcJTnBx4StDVHZ47zPMEj1/+J2rk/RTj8SLoHRKWCtcmhN4wRmudOXQNP29/w== + dependencies: + "@babel/runtime" "^7.6.0" + "@testing-library/dom" "^6.3.0" + "@types/testing-library__react" "^9.1.0" + "@types/babel__core@^7.1.0": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" @@ -508,11 +550,46 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/react-dom@*": + version "16.9.3" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.3.tgz#4006ff0e13958af91313869077c04cb20d9b9d04" + integrity sha512-FUuZKXPr9qlzUT9lhuzrZgLjH63TvNn28Ch3MvKG4B+F52zQtO8DtE0Opbncy3xaucNZM2WIPfuNTgkbKx5Brg== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.11.tgz#70e0b7ad79058a7842f25ccf2999807076ada120" + integrity sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/testing-library__dom@*", "@types/testing-library__dom@^6.0.0": + version "6.5.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.5.3.tgz#4a33e91055994c9f08981253edec44c85f4dd7f0" + integrity sha512-E/LSnbzo25gCLy/YOHKY9KJ+rfI8hy5cfbScyZqVuFw9CUMn1faWEDnxMcVHgjAbWtTStfllB8TwNKCx8bAKeA== + dependencies: + pretty-format "^24.3.0" + +"@types/testing-library__react@^9.1.0": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.2.tgz#e33af9124c60a010fc03a34eff8f8a34a75c4351" + integrity sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q== + dependencies: + "@types/react-dom" "*" + "@types/testing-library__dom" "*" + "@types/yargs-parser@*": version "13.1.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" @@ -836,6 +913,14 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +aria-query@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -925,6 +1010,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -1488,16 +1578,16 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^2.11.0, commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^2.20.0: version "2.20.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== -commander@~2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1710,6 +1800,11 @@ cssstyle@^1.0.0: dependencies: cssom "0.3.x" +csstype@^2.2.0: + version "2.6.7" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" + integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2165,6 +2260,11 @@ eslint-plugin-react@7.16.0: prop-types "^15.7.2" resolve "^1.12.0" +eslint-plugin-testing-library@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-1.3.0.tgz#4873dbb6f6b239e58159fd34a9aa000e1a8db3a5" + integrity sha512-zZRDonh6PW1DGZfPTcw0/FSFeka9tPQlcXyLaSC/oRqJRjZxE18hZ4Mzal0Kkkolc5cFfBaJURxu+EceqLYicw== + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -5335,7 +5435,7 @@ pretty-bytes@^1.0.2: get-stdin "^4.0.1" meow "^3.1.0" -pretty-format@^24.9.0: +pretty-format@^24.3.0, pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== @@ -5633,6 +5733,11 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -6881,6 +6986,11 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +wait-for-expect@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.1.tgz#ec204a76b0038f17711e575720aaf28505ac7185" + integrity sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw== + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" From 33be68c182f8534d0e9198a51c2e98b90f113bd5 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sun, 3 Nov 2019 00:56:29 -0400 Subject: [PATCH 04/15] Extract App component back into its own file --- src/options/App.js | 154 ++++++++++++++++++++ src/options/{index.test.js => App.test.js} | 4 +- src/options/index.js | 160 +-------------------- 3 files changed, 159 insertions(+), 159 deletions(-) create mode 100644 src/options/App.js rename src/options/{index.test.js => App.test.js} (82%) diff --git a/src/options/App.js b/src/options/App.js new file mode 100644 index 00000000..4463aca3 --- /dev/null +++ b/src/options/App.js @@ -0,0 +1,154 @@ +import React, { useEffect, useState } from "react"; + +const defaultOptions = { + arrowParens: "avoid", + bracketSpacing: true, + jsxBracketSameLine: false, + printWidth: 80, + semi: true, + singleQuote: false, + tabWidth: 2, + trailingComma: "none", + useTabs: false +}; + +export default function App() { + const [options, setOptions] = useState(); + + useEffect(() => { + chrome.storage.sync.get(items => { + setOptions({ ...defaultOptions, ...items.options }); + }); + }, []); + + useEffect(() => { + chrome.storage.sync.set({ options }); + }, [options]); + + function handleChange({ target: { checked, name, type, value } }) { + setOptions({ + ...options, + [name]: + type === "checkbox" + ? checked + : type === "number" + ? parseInt(value) + : value + }); + } + + // Form based on https://github.com/codesandbox/codesandbox-client/blob/master/packages/app/src/app/pages/common/Modals/PreferencesModal/CodeFormatting/Prettier/index.tsx + return options ? ( + <> +
+ +

Specify the line length that the printer will wrap on.

+
+ +

Specify the number of spaces per indentation-level.

+
+ +

Indent lines with tabs instead of spaces.

+
+ +

Print semicolons at the ends of statements.

+
+ +

+ Use {"'"}single{"'"} quotes instead of {'"'}double{'"'} quotes. +

+
+ +

Print trailing commas wherever possible.

+
+ +

Print spaces between brackets in object literals.

+
+ +

+ Put the `{">"}` of a multi-line JSX element at the end of the last line + instead of being alone on the next line. +

+
+ +

Include parentheses around a sole arrow function parameter.

+ + ) : null; +} diff --git a/src/options/index.test.js b/src/options/App.test.js similarity index 82% rename from src/options/index.test.js rename to src/options/App.test.js index 7538d225..1a331d4f 100644 --- a/src/options/index.test.js +++ b/src/options/App.test.js @@ -1,4 +1,4 @@ -import App from "."; +import App from "./App"; import React from "react"; import { render } from "@testing-library/react"; @@ -13,6 +13,6 @@ window.chrome = { } }; -test("Options render", () => { +test("App", () => { render(); }); diff --git a/src/options/index.js b/src/options/index.js index f5573fbf..9873e9e7 100644 --- a/src/options/index.js +++ b/src/options/index.js @@ -1,159 +1,5 @@ -import React, { useEffect, useState } from "react"; +import App from "./App"; +import React from "react"; import ReactDOM from "react-dom"; -const defaultOptions = { - arrowParens: "avoid", - bracketSpacing: true, - jsxBracketSameLine: false, - printWidth: 80, - semi: true, - singleQuote: false, - tabWidth: 2, - trailingComma: "none", - useTabs: false -}; - -export default function App() { - const [options, setOptions] = useState(); - - useEffect(() => { - chrome.storage.sync.get(items => { - setOptions({ ...defaultOptions, ...items.options }); - }); - }, []); - - useEffect(() => { - chrome.storage.sync.set({ options }); - }, [options]); - - function handleChange({ target: { checked, name, type, value } }) { - setOptions({ - ...options, - [name]: - type === "checkbox" - ? checked - : type === "number" - ? parseInt(value) - : value - }); - } - - // Form based on https://github.com/codesandbox/codesandbox-client/blob/master/packages/app/src/app/pages/common/Modals/PreferencesModal/CodeFormatting/Prettier/index.tsx - return options ? ( - <> -
- -

Specify the line length that the printer will wrap on.

-
- -

Specify the number of spaces per indentation-level.

-
- -

Indent lines with tabs instead of spaces.

-
- -

Print semicolons at the ends of statements.

-
- -

- Use {"'"}single{"'"} quotes instead of {'"'}double{'"'} quotes. -

-
- -

Print trailing commas wherever possible.

-
- -

Print spaces between brackets in object literals.

-
- -

- Put the `{">"}` of a multi-line JSX element at the end of the last line - instead of being alone on the next line. -

-
- -

Include parentheses around a sole arrow function parameter.

- - ) : null; -} - -if (process.env.NODE_ENV !== "test") { - ReactDOM.render(, document.getElementById("root")); -} +ReactDOM.render(, document.getElementById("root")); From 685c0f774fa6558f77c4531c9517a7b2a57d1966 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Fri, 8 Nov 2019 16:15:30 -0500 Subject: [PATCH 05/15] Revert "Extract Babel config for React" This reverts commit fe449d26ba429dbf25bde462c9e74f1ba4153b5a. --- .babelrc | 1 + src/options/.babelrc | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 src/options/.babelrc diff --git a/.babelrc b/.babelrc index 7521eb07..cec90da7 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,5 @@ { + "presets": ["@babel/preset-react"], "env": { "test": { "plugins": ["@babel/plugin-transform-modules-commonjs"] diff --git a/src/options/.babelrc b/src/options/.babelrc deleted file mode 100644 index 7dd5e9df..00000000 --- a/src/options/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-react"] -} From d6166f3d667e51c813b89b1400f553563364e4c8 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 19:17:29 -0400 Subject: [PATCH 06/15] Format with Prettier --- src/options/App.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/options/App.test.js b/src/options/App.test.js index 1a331d4f..28ec3f5b 100644 --- a/src/options/App.test.js +++ b/src/options/App.test.js @@ -8,9 +8,9 @@ window.chrome = { get(callback) { setTimeout(() => callback({})); }, - set() {} - } - } + set() {}, + }, + }, }; test("App", () => { From 16ad867c56bf75974a244511938d23cef06b1d24 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 19:23:14 -0400 Subject: [PATCH 07/15] Mock SVG files --- package.json | 5 +++++ src/options/fileMock.js | 0 2 files changed, 5 insertions(+) create mode 100644 src/options/fileMock.js diff --git a/package.json b/package.json index e9e1b608..33962d9e 100644 --- a/package.json +++ b/package.json @@ -74,5 +74,10 @@ "hooks": { "pre-commit": "lint-staged" } + }, + "jest": { + "moduleNameMapper": { + "\\.svg$": "/src/options/fileMock.js" + } } } diff --git a/src/options/fileMock.js b/src/options/fileMock.js new file mode 100644 index 00000000..e69de29b From f5ef206a314c583ec188a2fba751a9541b223d0a Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 19:25:10 -0400 Subject: [PATCH 08/15] Update test to import AppContainer --- src/options/{App.test.js => AppContainer.test.js} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/options/{App.test.js => AppContainer.test.js} (77%) diff --git a/src/options/App.test.js b/src/options/AppContainer.test.js similarity index 77% rename from src/options/App.test.js rename to src/options/AppContainer.test.js index 28ec3f5b..8ea3f830 100644 --- a/src/options/App.test.js +++ b/src/options/AppContainer.test.js @@ -1,4 +1,4 @@ -import App from "./App"; +import AppContainer from "./AppContainer"; import React from "react"; import { render } from "@testing-library/react"; @@ -14,5 +14,5 @@ window.chrome = { }; test("App", () => { - render(); + render(); }); From 29e8a455ccd563598588cb4d2905ade6df23d9e7 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 19:28:40 -0400 Subject: [PATCH 09/15] Mock webextension-polyfill --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 33962d9e..3dc27085 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,8 @@ }, "jest": { "moduleNameMapper": { - "\\.svg$": "/src/options/fileMock.js" + "\\.svg$": "/src/options/fileMock.js", + "^webextension-polyfill$": "/src/options/fileMock.js" } } } From 7cf742030d4cd336844fcf17312af3d0dcc81b3a Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 19:48:52 -0400 Subject: [PATCH 10/15] Fix mocks --- package.json | 4 ++-- src/options/AppContainer.test.js | 11 ----------- src/options/fileMock.js | 0 src/options/svgrMock.js | 2 ++ src/options/webextension-polyfill.js | 10 ++++++++++ 5 files changed, 14 insertions(+), 13 deletions(-) delete mode 100644 src/options/fileMock.js create mode 100644 src/options/svgrMock.js create mode 100644 src/options/webextension-polyfill.js diff --git a/package.json b/package.json index 3dc27085..928d6d90 100644 --- a/package.json +++ b/package.json @@ -77,8 +77,8 @@ }, "jest": { "moduleNameMapper": { - "\\.svg$": "/src/options/fileMock.js", - "^webextension-polyfill$": "/src/options/fileMock.js" + "\\.svg": "/src/options/svgrMock.js", + "^webextension-polyfill$": "/src/options/webextension-polyfill.js" } } } diff --git a/src/options/AppContainer.test.js b/src/options/AppContainer.test.js index 8ea3f830..f1d25dc7 100644 --- a/src/options/AppContainer.test.js +++ b/src/options/AppContainer.test.js @@ -2,17 +2,6 @@ import AppContainer from "./AppContainer"; import React from "react"; import { render } from "@testing-library/react"; -window.chrome = { - storage: { - sync: { - get(callback) { - setTimeout(() => callback({})); - }, - set() {}, - }, - }, -}; - test("App", () => { render(); }); diff --git a/src/options/fileMock.js b/src/options/fileMock.js deleted file mode 100644 index e69de29b..00000000 diff --git a/src/options/svgrMock.js b/src/options/svgrMock.js new file mode 100644 index 00000000..4e215833 --- /dev/null +++ b/src/options/svgrMock.js @@ -0,0 +1,2 @@ +export default "SvgrURL"; +export const ReactComponent = "div"; diff --git a/src/options/webextension-polyfill.js b/src/options/webextension-polyfill.js new file mode 100644 index 00000000..75e66883 --- /dev/null +++ b/src/options/webextension-polyfill.js @@ -0,0 +1,10 @@ +export default { + storage: { + sync: { + get(callback) { + setTimeout(() => callback({})); + }, + set() {}, + }, + }, +}; From 5ec506a2a10756c46a7ea5c7b783f543196929e8 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 19:52:33 -0400 Subject: [PATCH 11/15] Move mocks to root for easier module mocking --- __mocks__/.eslintrc.json | 8 ++++++++ {src/options => __mocks__}/svgrMock.js | 0 {src/options => __mocks__}/webextension-polyfill.js | 0 package.json | 3 +-- 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 __mocks__/.eslintrc.json rename {src/options => __mocks__}/svgrMock.js (100%) rename {src/options => __mocks__}/webextension-polyfill.js (100%) diff --git a/__mocks__/.eslintrc.json b/__mocks__/.eslintrc.json new file mode 100644 index 00000000..b24df4b1 --- /dev/null +++ b/__mocks__/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "env": { + "browser": true + }, + "parserOptions": { + "sourceType": "module" + } +} diff --git a/src/options/svgrMock.js b/__mocks__/svgrMock.js similarity index 100% rename from src/options/svgrMock.js rename to __mocks__/svgrMock.js diff --git a/src/options/webextension-polyfill.js b/__mocks__/webextension-polyfill.js similarity index 100% rename from src/options/webextension-polyfill.js rename to __mocks__/webextension-polyfill.js diff --git a/package.json b/package.json index 928d6d90..f772405f 100644 --- a/package.json +++ b/package.json @@ -77,8 +77,7 @@ }, "jest": { "moduleNameMapper": { - "\\.svg": "/src/options/svgrMock.js", - "^webextension-polyfill$": "/src/options/webextension-polyfill.js" + "\\.svg": "/__mocks__/svgrMock.js" } } } From 4f28781e0bc876be259fb676f494dcf5bbeac608 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 20:49:29 -0400 Subject: [PATCH 12/15] Replace custom Chrome mock with sinon-chrome --- __mocks__/webextension-polyfill.js | 10 -- package.json | 6 +- src/setupTests.js | 4 + yarn.lock | 144 ++++++++++++++++++++++++++++- 4 files changed, 151 insertions(+), 13 deletions(-) delete mode 100644 __mocks__/webextension-polyfill.js create mode 100644 src/setupTests.js diff --git a/__mocks__/webextension-polyfill.js b/__mocks__/webextension-polyfill.js deleted file mode 100644 index 75e66883..00000000 --- a/__mocks__/webextension-polyfill.js +++ /dev/null @@ -1,10 +0,0 @@ -export default { - storage: { - sync: { - get(callback) { - setTimeout(() => callback({})); - }, - set() {}, - }, - }, -}; diff --git a/package.json b/package.json index f772405f..a74f787b 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "react-devtools": "4.8.2", "sass": "1.26.10", "sass-loader": "9.0.3", + "sinon-chrome": "3.0.1", "style-loader": "1.2.1", "webextension-polyfill": "0.6.0", "webpack": "4.44.1", @@ -78,6 +79,9 @@ "jest": { "moduleNameMapper": { "\\.svg": "/__mocks__/svgrMock.js" - } + }, + "setupFiles": [ + "/src/setupTests.js" + ] } } diff --git a/src/setupTests.js b/src/setupTests.js new file mode 100644 index 00000000..79c76720 --- /dev/null +++ b/src/setupTests.js @@ -0,0 +1,4 @@ +import chrome from "sinon-chrome"; + +chrome.runtime.id = "testid"; +window.chrome = chrome; diff --git a/yarn.lock b/yarn.lock index 2a0af9c0..fbf7940f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1196,6 +1196,15 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + "@jest/types@^26.3.0": version "26.3.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" @@ -1245,6 +1254,13 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.4.0": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" + integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== + dependencies: + type-detect "4.0.8" + "@sinonjs/commons@^1.7.0": version "1.7.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.0.tgz#f90ffc52a2e519f018b13b6c4da03cbff36ebed6" @@ -1259,6 +1275,28 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sinonjs/formatio@^3.2.1": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.2.tgz#771c60dfa75ea7f2d68e3b94c7e888a78781372c" + integrity sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ== + dependencies: + "@sinonjs/commons" "^1" + "@sinonjs/samsam" "^3.1.0" + +"@sinonjs/samsam@^3.1.0", "@sinonjs/samsam@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.3.tgz#46682efd9967b259b81136b9f120fd54585feb4a" + integrity sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ== + dependencies: + "@sinonjs/commons" "^1.3.0" + array-from "^2.1.1" + lodash "^4.17.15" + +"@sinonjs/text-encoding@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" + integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== + "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" @@ -1476,6 +1514,14 @@ dependencies: "@types/istanbul-lib-coverage" "*" +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + "@types/istanbul-reports@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" @@ -1606,6 +1652,13 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== +"@types/yargs@^13.0.0": + version "13.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.10.tgz#e77bf3fc73c781d48c2eb541f87c453e321e5f4b" + integrity sha512-MU10TSgzNABgdzKvQVW1nuuT+sgBMWeXNc3XOs5YXV5SDAK+PPja2eUuBNB9iqElu03xyEDqlnGw0jgl4nbqGQ== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^15.0.0": version "15.0.2" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.2.tgz#0bf292a0369493cee030e2e4f4ff84f5982b028d" @@ -1870,7 +1923,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.1.0: +ansi-regex@^4.0.0, ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -1983,6 +2036,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-from@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" + integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= + array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -3360,6 +3418,11 @@ diff-sequences@^26.3.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== +diff@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -5194,6 +5257,11 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5783,6 +5851,11 @@ jsx-ast-utils@^2.4.1: array-includes "^3.1.1" object.assign "^4.1.0" +just-extend@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4" + integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA== + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -5999,6 +6072,11 @@ lodash.union@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= +lodash@^4.16.3: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" @@ -6021,6 +6099,18 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +lolex@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7" + integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg== + +lolex@^5.0.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -6437,6 +6527,17 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +nise@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.3.tgz#9d2cfe37d44f57317766c6e9408a359c5d3ac1f7" + integrity sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ== + dependencies: + "@sinonjs/formatio" "^3.2.1" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + lolex "^5.0.1" + path-to-regexp "^1.7.0" + no-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" @@ -6978,6 +7079,13 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -7401,6 +7509,11 @@ react-is@^16.12.0, react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== +react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react@16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" @@ -8034,6 +8147,28 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +sinon-chrome@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/sinon-chrome/-/sinon-chrome-3.0.1.tgz#9fb14c230fa0959cb280f9f589e9eda8ccfda1d9" + integrity sha512-NTEFhyuiWEMnRmIqldUiA2DhKn2EqnZxyEk5Ez5rBXj+Nl54aJ0MEmF4wjltrxecxd8zlNLxyE0HyLabev9JsQ== + dependencies: + lodash "^4.16.3" + sinon "^7.2.3" + urijs "^1.18.2" + +sinon@^7.2.3: + version "7.5.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" + integrity sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q== + dependencies: + "@sinonjs/commons" "^1.4.0" + "@sinonjs/formatio" "^3.2.1" + "@sinonjs/samsam" "^3.3.3" + diff "^3.5.0" + lolex "^4.2.0" + nise "^1.5.2" + supports-color "^5.5.0" + sisteransi@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" @@ -8457,7 +8592,7 @@ sumchecker@^3.0.1: dependencies: debug "^4.1.0" -supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -8944,6 +9079,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urijs@^1.18.2: + version "1.19.2" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.2.tgz#f9be09f00c4c5134b7cb3cf475c1dd394526265a" + integrity sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w== + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" From 80e936c7f17904ffaf993167a646a58a926593f6 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 20:50:50 -0400 Subject: [PATCH 13/15] Fix SVGR component warning --- __mocks__/svgrMock.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__mocks__/svgrMock.js b/__mocks__/svgrMock.js index 4e215833..86acdad1 100644 --- a/__mocks__/svgrMock.js +++ b/__mocks__/svgrMock.js @@ -1,2 +1,2 @@ -export default "SvgrURL"; +export default "div"; export const ReactComponent = "div"; From 3b7903b2093748faf7cc4caed208562781fe447c Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 20:56:16 -0400 Subject: [PATCH 14/15] Fix test name --- src/options/AppContainer.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/options/AppContainer.test.js b/src/options/AppContainer.test.js index f1d25dc7..b4f551b7 100644 --- a/src/options/AppContainer.test.js +++ b/src/options/AppContainer.test.js @@ -2,6 +2,6 @@ import AppContainer from "./AppContainer"; import React from "react"; import { render } from "@testing-library/react"; -test("App", () => { +test("AppContainer", () => { render(); }); From d751acad1ef4804d76c060d2fb2a9a18734b5ada Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Sat, 29 Aug 2020 21:31:44 -0400 Subject: [PATCH 15/15] Revert "Move mocks to root for easier module mocking" This reverts commit 5ec506a2a10756c46a7ea5c7b783f543196929e8. --- __mocks__/.eslintrc.json | 8 -------- package.json | 2 +- {__mocks__ => src/options}/svgrMock.js | 0 3 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 __mocks__/.eslintrc.json rename {__mocks__ => src/options}/svgrMock.js (100%) diff --git a/__mocks__/.eslintrc.json b/__mocks__/.eslintrc.json deleted file mode 100644 index b24df4b1..00000000 --- a/__mocks__/.eslintrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "env": { - "browser": true - }, - "parserOptions": { - "sourceType": "module" - } -} diff --git a/package.json b/package.json index a74f787b..cc96cfb1 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ }, "jest": { "moduleNameMapper": { - "\\.svg": "/__mocks__/svgrMock.js" + "\\.svg": "/src/options/svgrMock.js" }, "setupFiles": [ "/src/setupTests.js" diff --git a/__mocks__/svgrMock.js b/src/options/svgrMock.js similarity index 100% rename from __mocks__/svgrMock.js rename to src/options/svgrMock.js