diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 1cc303671..11bab4677 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -31,15 +31,17 @@ Please check relevant options, delete irrelevant ones. - [ ] Translation Updates - [ ] Release -### TypeScript/Hooks Update +### Codebase Modernization - [ ] Updated files to React Hooks - [ ] Updated files to TypeScript +- [ ] Updated tests to React Testing Library ## Before / After diff --git a/package-lock.json b/package-lock.json index 1db53d399..a79aa6cfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,8 @@ "version": "1.5.0", "dependencies": { "@rollup/plugin-inject": "^5.0.5", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^12.1.5", "@vitejs/plugin-react": "^4.2.1", "@xrplf/isomorphic": "^1.0.0-beta.1", "@xrplf/prettier-config": "^1.9.1", @@ -66,6 +68,8 @@ "@types/node": "^22.14.0", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.9", + "@types/react-router-dom": "^5.3.3", + "@types/testing-library__jest-dom": "^5.14.9", "@typescript-eslint/eslint-plugin": "^8.32.1", "@typescript-eslint/parser": "^8.32.1", "babel-jest": "^29.7.0", @@ -110,6 +114,11 @@ "npm": ">=9.0.0 <11.0.0" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==" + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -4313,6 +4322,137 @@ "@svgr/core": "*" } }, + "node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "<18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "<18.0.0", + "react-dom": "<18.0.0" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -4345,6 +4485,11 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -4489,6 +4634,12 @@ "@types/node": "*" } }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -4514,7 +4665,6 @@ "version": "26.0.24", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "dev": true, "dependencies": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -4599,14 +4749,12 @@ "node_modules/@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", - "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "dev": true + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" }, "node_modules/@types/react": { "version": "17.0.85", "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.85.tgz", "integrity": "sha512-5oBDUsRDsrYq4DdyHaL99gE1AJCfuDhyxqF6/55fvvOIRkp1PpKuwJ+aMiGJR+GJt7YqMNclPROTHF20vY2cXA==", - "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -4617,16 +4765,35 @@ "version": "17.0.26", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.26.tgz", "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", - "dev": true, "peerDependencies": { "@types/react": "^17.0.0" } }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@types/semver": { "version": "7.7.0", @@ -4639,6 +4806,14 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dependencies": { + "@types/jest": "*" + } + }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -5214,7 +5389,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "devOptional": true, "engines": { "node": ">=8" } @@ -5299,7 +5473,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -5335,7 +5508,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" @@ -7054,6 +7226,11 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -7705,6 +7882,37 @@ } } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-equal-ident": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal-ident/-/deep-equal-ident-1.1.1.tgz", @@ -7864,7 +8072,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true, "engines": { "node": ">= 10.14.2" } @@ -7899,6 +8106,11 @@ "node": ">=6.0.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -8404,6 +8616,25 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-iterator-helpers": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", @@ -10619,7 +10850,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11026,7 +11256,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -11533,7 +11762,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -11598,7 +11826,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -11639,7 +11866,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, "dependencies": { "has-bigints": "^1.0.2" }, @@ -11666,7 +11892,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -11755,7 +11980,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -11896,7 +12120,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -11931,7 +12154,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -12002,7 +12224,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -12014,7 +12235,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, "dependencies": { "call-bound": "^1.0.3" }, @@ -12042,7 +12262,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -12064,7 +12283,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -12100,7 +12318,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -12127,7 +12344,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -12163,8 +12379,7 @@ "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", @@ -12596,7 +12811,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^26.6.2", @@ -13675,7 +13889,6 @@ "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true, "engines": { "node": ">= 10.14.2" } @@ -15244,6 +15457,14 @@ "yallist": "^3.0.2" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -15690,7 +15911,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "engines": { "node": ">=4" } @@ -17278,7 +17498,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -17293,7 +17512,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -17309,7 +17527,6 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -17617,8 +17834,7 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-query": { "version": "3.39.3", @@ -17955,7 +18171,6 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -19010,7 +19225,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -19760,6 +19974,18 @@ "node": ">=0.10.0" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -22260,7 +22486,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", @@ -22306,7 +22531,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -22655,6 +22879,11 @@ } }, "dependencies": { + "@adobe/css-tools": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==" + }, "@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -25211,6 +25440,105 @@ "svg-parser": "^2.0.4" } }, + "@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + }, + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "requires": { + "deep-equal": "^2.0.5" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "requires": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + } + } + }, + "@testing-library/react": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "<18.0.0" + } + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -25240,6 +25568,11 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -25386,6 +25719,12 @@ "@types/node": "*" } }, + "@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -25411,7 +25750,6 @@ "version": "26.0.24", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "dev": true, "requires": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -25489,14 +25827,12 @@ "@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", - "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "dev": true + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" }, "@types/react": { "version": "17.0.85", "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.85.tgz", "integrity": "sha512-5oBDUsRDsrYq4DdyHaL99gE1AJCfuDhyxqF6/55fvvOIRkp1PpKuwJ+aMiGJR+GJt7YqMNclPROTHF20vY2cXA==", - "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -25507,14 +25843,33 @@ "version": "17.0.26", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.26.tgz", "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", - "dev": true, "requires": {} }, + "@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dev": true, + "requires": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dev": true, + "requires": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, "@types/scheduler": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "@types/semver": { "version": "7.7.0", @@ -25527,6 +25882,14 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, + "@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "requires": { + "@types/jest": "*" + } + }, "@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -25901,8 +26264,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "devOptional": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -25966,8 +26328,7 @@ "aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" }, "arr-diff": { "version": "4.0.0", @@ -25991,7 +26352,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, "requires": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" @@ -27285,6 +27645,11 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -27763,6 +28128,31 @@ "peer": true, "requires": {} }, + "deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + } + }, "deep-equal-ident": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal-ident/-/deep-equal-ident-1.1.1.tgz", @@ -27885,8 +28275,7 @@ "diff-sequences": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" }, "dir-glob": { "version": "3.0.1", @@ -27912,6 +28301,11 @@ "esutils": "^2.0.2" } }, + "dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, "dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -28329,6 +28723,22 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + } + }, "es-iterator-helpers": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", @@ -29898,8 +30308,7 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gauge": { "version": "3.0.2", @@ -30197,8 +30606,7 @@ "has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==" }, "has-flag": { "version": "4.0.0", @@ -30581,7 +30989,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, "requires": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -30628,7 +31035,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, "requires": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -30657,7 +31063,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, "requires": { "has-bigints": "^1.0.2" } @@ -30675,7 +31080,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, "requires": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -30734,7 +31138,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, "requires": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -30825,8 +31228,7 @@ "is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" }, "is-nan": { "version": "1.3.2", @@ -30846,7 +31248,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, "requires": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -30894,14 +31295,12 @@ "is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" }, "is-shared-array-buffer": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, "requires": { "call-bound": "^1.0.3" } @@ -30917,7 +31316,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, "requires": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -30933,7 +31331,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, "requires": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -30956,8 +31353,7 @@ "is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" }, "is-weakref": { "version": "1.1.1", @@ -30972,7 +31368,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, "requires": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -30996,8 +31391,7 @@ "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "isexe": { "version": "2.0.0", @@ -31316,7 +31710,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^26.6.2", @@ -32166,8 +32559,7 @@ "jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" }, "jest-haste-map": { "version": "29.7.0", @@ -33389,6 +33781,11 @@ "yallist": "^3.0.2" } }, + "lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" + }, "magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -33699,8 +34096,7 @@ "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "minimatch": { "version": "9.0.5", @@ -34854,7 +35250,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -34866,7 +35261,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -34879,7 +35273,6 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -35103,8 +35496,7 @@ "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-query": { "version": "3.39.3", @@ -35352,7 +35744,6 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, "requires": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -36134,7 +36525,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, "requires": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -36715,6 +37105,15 @@ "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true }, + "stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "requires": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -38378,7 +38777,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, "requires": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", @@ -38412,7 +38810,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, "requires": { "is-map": "^2.0.3", "is-set": "^2.0.3", diff --git a/package.json b/package.json index 4c1b6f30b..f16fd066e 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "version": "1.5.0", "dependencies": { "@rollup/plugin-inject": "^5.0.5", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^12.1.5", "@vitejs/plugin-react": "^4.2.1", "@xrplf/isomorphic": "^1.0.0-beta.1", "@xrplf/prettier-config": "^1.9.1", @@ -61,6 +63,8 @@ "@types/node": "^22.14.0", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.9", + "@types/react-router-dom": "^5.3.3", + "@types/testing-library__jest-dom": "^5.14.9", "@typescript-eslint/eslint-plugin": "^8.32.1", "@typescript-eslint/parser": "^8.32.1", "babel-jest": "^29.7.0", @@ -101,7 +105,8 @@ "xrpl": "^4.2.5" }, "resolutions": { - "jest-environment-jsdom": "29.3.1" + "jest-environment-jsdom": "29.3.1", + "rollup": "npm:@rollup/wasm-node" }, "lint-staged": { "src/**/*.{js,jsx,json,scss}": [ diff --git a/src/containers/Accounts/AccountMPTTable/test/AccountMPTRow.test.tsx b/src/containers/Accounts/AccountMPTTable/test/AccountMPTRow.test.tsx index 04d9eb120..e8165c5a6 100644 --- a/src/containers/Accounts/AccountMPTTable/test/AccountMPTRow.test.tsx +++ b/src/containers/Accounts/AccountMPTTable/test/AccountMPTRow.test.tsx @@ -55,7 +55,7 @@ describe('AccountMPTRow', () => { '000017C2CE76E3E3328AE9E0D80CDD68BA72CC8D8D053DB6', ) expect(wrapper.find('td').at(1).html()).toBe( - 'rKFgd9FNzwu7a7iVYa2Me4dmBC3zzUepSC', + 'rKFgd9FNzwu7a7iVYa2Me4dmBC3zzUepSC', ) expect(wrapper.find('td').at(2).html()).toBe('0.100') wrapper.unmount() diff --git a/src/containers/Ledgers/css/ledgerMetrics.scss b/src/containers/Ledgers/css/ledgerMetrics.scss index 09c33e9ab..0421faaa9 100644 --- a/src/containers/Ledgers/css/ledgerMetrics.scss +++ b/src/containers/Ledgers/css/ledgerMetrics.scss @@ -141,7 +141,6 @@ width: 14px; height: 14px; } - } .label.n-unl-metric { diff --git a/src/containers/Network/css/style.scss b/src/containers/Network/css/style.scss index 0ad498ddf..37e5b7d09 100644 --- a/src/containers/Network/css/style.scss +++ b/src/containers/Network/css/style.scss @@ -46,7 +46,12 @@ margin-bottom: 32px; margin-left: 16px; margin-left: calc((100vw - 1500px) / 2); - margin-left: clamp(16px, calc((100vw - 1500px) / 2), calc((100vw - 1500px) / 2)); // Adjust based on wrap margin with min 16px + margin-left: clamp( + 16px, + calc((100vw - 1500px) / 2), + calc((100vw - 1500px) / 2) + ); // Adjust based on wrap margin with min 16px + color: $white; font-size: 32px; @include for-size(tablet-portrait-up) { diff --git a/src/containers/Network/css/validatorsTable.scss b/src/containers/Network/css/validatorsTable.scss index ed1775702..7624c1da3 100644 --- a/src/containers/Network/css/validatorsTable.scss +++ b/src/containers/Network/css/validatorsTable.scss @@ -124,7 +124,8 @@ } @include for-size(tablet-portrait-up) { - .n-unl, .version { + .n-unl, + .version { display: table-cell; } } @@ -141,5 +142,4 @@ } } } - } diff --git a/src/containers/Network/test/mockValidators.json b/src/containers/Network/test/mockValidators.json index e425574cb..c3b6ae4d8 100644 --- a/src/containers/Network/test/mockValidators.json +++ b/src/containers/Network/test/mockValidators.json @@ -23,9 +23,9 @@ "missed": 120, "incomplete": true }, - "base_fee":10, - "reserve_base":1000000, - "reserve_inc":200000 + "base_fee": 10, + "reserve_base": 1000000, + "reserve_inc": 200000 }, { "master_key": "nHDaxUL87HiVszvCamVu4A3Gecq6LTxKkUVNdzf3nqmuSywgRqu4", diff --git a/src/containers/Transactions/test/Meta.test.tsx b/src/containers/Transactions/test/Meta.test.tsx index ac4195799..82309d475 100644 --- a/src/containers/Transactions/test/Meta.test.tsx +++ b/src/containers/Transactions/test/Meta.test.tsx @@ -35,7 +35,7 @@ describe('TransactionMeta container', () => { expect(w.find('li').length).toBe(23) expect(w.find('li').at(0).html()).toBe( - '
  • owned_account_root rUmustd4TbkjaEuS7S1damozpBEREgRz9z
  • ', + '
  • owned_account_root rUmustd4TbkjaEuS7S1damozpBEREgRz9z
  • ', ) expect(w.find('li').at(1).html()).toBe( @@ -43,7 +43,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(2).html()).toBe( - '
  • owned_account_root rPt8rwFrsucmjdKfjwRHGz9iZGxxN2cLYh
  • ', + '
  • owned_account_root rPt8rwFrsucmjdKfjwRHGz9iZGxxN2cLYh
  • ', ) expect(w.find('li').at(3).html()).toBe( @@ -51,7 +51,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(4).html()).toBe( - '
  • owned_account_root rEGoBvzusE2MkDn3yrgZc817XiwRofqoJq
  • ', + '
  • owned_account_root rEGoBvzusE2MkDn3yrgZc817XiwRofqoJq
  • ', ) expect(w.find('li').at(5).html()).toBe( @@ -59,11 +59,11 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(6).html()).toBe( - '
  • transaction_owned_directory
  • ', + '
  • transaction_owned_directory
  • ', ) expect(w.find('li').at(7).html()).toBe( - '
  • It modified a XRP/CNYowned byrEGoBvzusE2MkDn3yrgZc817XiwRofqoJqwith sequence # 1181517
  • ', + '
  • It modified a XRP/CNYowned byrEGoBvzusE2MkDn3yrgZc817XiwRofqoJqwith sequence # 1181517
  • ', ) expect(w.find('li').at(8).html()).toBe( @@ -75,11 +75,11 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(10).html()).toBe( - '
  • TakerGets CNY.rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y decreased byCN¥224.7141103fromCN¥2,100.12079671toCN¥1,875.40668641
  • ', + '
  • TakerGets CNY.rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y decreased byCN¥224.7141103fromCN¥2,100.12079671toCN¥1,875.40668641
  • ', ) expect(w.find('li').at(11).html()).toBe( - '
  • It modified a XRP/CNYowned byrUmustd4TbkjaEuS7S1damozpBEREgRz9zwith sequence # 5804
  • ', + '
  • It modified a XRP/CNYowned byrUmustd4TbkjaEuS7S1damozpBEREgRz9zwith sequence # 5804
  • ', ) expect(w.find('li').at(12).html()).toBe( @@ -87,7 +87,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(13).html()).toBe( - '
  • TakerPays CNY.razqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA decreased byCN¥225.45293634fromCN¥12,589.58241408toCN¥12,364.12947774
  • ', + '
  • TakerPays CNY.razqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA decreased byCN¥225.45293634fromCN¥12,589.58241408toCN¥12,364.12947774
  • ', ) expect(w.find('li').at(14).html()).toBe( @@ -95,7 +95,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(15).html()).toBe( - '
  • It modified a CNYripplestate node betweenrUmustd4TbkjaEuS7S1damozpBEREgRz9zandrazqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA
  • ', + '
  • It modified a CNYripplestate node betweenrUmustd4TbkjaEuS7S1damozpBEREgRz9zandrazqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXA
  • ', ) expect(w.find('li').at(16).html()).toBe( @@ -103,7 +103,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(17).html()).toBe( - '
  • It modified a CNYripplestate node betweenrPt8rwFrsucmjdKfjwRHGz9iZGxxN2cLYhandrKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y
  • ', + '
  • It modified a CNYripplestate node betweenrPt8rwFrsucmjdKfjwRHGz9iZGxxN2cLYhandrKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y
  • ', ) expect(w.find('li').at(18).html()).toBe( @@ -111,7 +111,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(19).html()).toBe( - '
  • It modified a CNYripplestate node betweenrEGoBvzusE2MkDn3yrgZc817XiwRofqoJqandrKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y
  • ', + '
  • It modified a CNYripplestate node betweenrEGoBvzusE2MkDn3yrgZc817XiwRofqoJqandrKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y
  • ', ) expect(w.find('li').at(20).html()).toBe( @@ -119,7 +119,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(21).html()).toBe( - '
  • It modified a CNYripplestate node betweenrazqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXAandrPt8rwFrsucmjdKfjwRHGz9iZGxxN2cLYh
  • ', + '
  • It modified a CNYripplestate node betweenrazqQKzJRdB4UxFPWf5NEpEG3WMkmwgcXAandrPt8rwFrsucmjdKfjwRHGz9iZGxxN2cLYh
  • ', ) expect(w.find('li').at(22).html()).toBe( @@ -174,7 +174,7 @@ describe('TransactionMeta container', () => { expect(w.find('li').length).toBe(6) expect(w.find('li').at(2).html()).toBe( - '
  • It modified an MPToken node ofrnNkvddM96FE2QsaFztLAn5xicjq5d6d8d
  • ', + '
  • It modified an MPToken node ofrnNkvddM96FE2QsaFztLAn5xicjq5d6d8d
  • ', ) expect(w.find('li').at(3).html()).toBe( @@ -182,7 +182,7 @@ describe('TransactionMeta container', () => { ) expect(w.find('li').at(4).html()).toBe( - '
  • It modified an MPTokenIssuance node ofrwREfyDU1SbcjN3xXZDbm8uNJV77T2ruKw
  • ', + '
  • It modified an MPTokenIssuance node ofrwREfyDU1SbcjN3xXZDbm8uNJV77T2ruKw
  • ', ) expect(w.find('li').at(5).html()).toBe( diff --git a/src/containers/shared/components/Account.tsx b/src/containers/shared/components/Account.tsx index fa102ff39..c27f17ec3 100644 --- a/src/containers/shared/components/Account.tsx +++ b/src/containers/shared/components/Account.tsx @@ -17,6 +17,7 @@ export const Account = (props: AccountProps) => { {link ? ( { {parts[0]} ) : ( - + {parts[0]} )} - {computedTag && :{computedTag}} + {computedTag && ( + + :{computedTag} + + )} ) } diff --git a/src/containers/shared/components/Amount.tsx b/src/containers/shared/components/Amount.tsx index 926319d0a..8c7607ca0 100644 --- a/src/containers/shared/components/Amount.tsx +++ b/src/containers/shared/components/Amount.tsx @@ -34,8 +34,8 @@ export const Amount = ({ const options = { ...CURRENCY_OPTIONS, currency } const renderAmount = (localizedAmount) => ( - - + + {modifier && {modifier}} {localizedAmount} {' '} diff --git a/src/containers/shared/components/Currency.tsx b/src/containers/shared/components/Currency.tsx index 8f72e5a1a..cd959538e 100644 --- a/src/containers/shared/components/Currency.tsx +++ b/src/containers/shared/components/Currency.tsx @@ -28,17 +28,22 @@ const Currency = (props: Props) => { displaySymbol = true, isMPT = false, } = props - let content + let content: string if (isMPT) { const display = `MPT (${currency})` - content = link ? ( - - {display} - - ) : ( - display - ) + if (link) + return ( + + {display} + + ) + content = display } else { let currencyCode = currency?.length === NON_STANDARD_CODE_LENGTH && @@ -64,17 +69,25 @@ const Currency = (props: Props) => { display += shortenIssuer ? issuer.substring(0, 4) : issuer } - content = - link && issuer ? ( - + if (link && issuer) + return ( + {display} - ) : ( - display ) + content = display } - return {content} + return ( + + {content} + + ) } export const hexToString = (hex: string) => { diff --git a/src/containers/shared/components/TokenSearchResults/test/TokenSearchResults.test.js b/src/containers/shared/components/TokenSearchResults/test/TokenSearchResults.test.js index 3457e06a4..23d1bbfe3 100644 --- a/src/containers/shared/components/TokenSearchResults/test/TokenSearchResults.test.js +++ b/src/containers/shared/components/TokenSearchResults/test/TokenSearchResults.test.js @@ -61,7 +61,7 @@ describe('Testing tokens search', () => { `
    tokens (1)
    `, ) expect(searchMenu.find('.currency').at(0).html()).toEqual( - `SOLO`, + `SOLO`, ) expect(searchMenu.find('.issuer-name').at(0).html()).toEqual( `
    Sologenic (
    `, diff --git a/src/containers/shared/components/Transaction/DepositPreauth/test/DepositPreauthDescription.test.tsx b/src/containers/shared/components/Transaction/DepositPreauth/test/DepositPreauthDescription.test.tsx index 29672c26c..fdaa7079e 100644 --- a/src/containers/shared/components/Transaction/DepositPreauth/test/DepositPreauthDescription.test.tsx +++ b/src/containers/shared/components/Transaction/DepositPreauth/test/DepositPreauthDescription.test.tsx @@ -12,7 +12,7 @@ describe('DepositPreauth: Description', () => { it('renders description for authorize', () => { const wrapper = createWrapper(mockDepositPreaut) expect(wrapper.html()).toBe( - `
    It authorizes to send payments to this account
    `, + `
    It authorizes to send payments to this account
    `, ) wrapper.unmount() }) @@ -20,7 +20,7 @@ describe('DepositPreauth: Description', () => { it('renders description for unauthorize', () => { const wrapper = createWrapper(mockDepositPreauthUnauthorize) expect(wrapper.html()).toBe( - `
    It removes the authorization for to send payments to this account
    `, + `
    It removes the authorization for to send payments to this account
    `, ) wrapper.unmount() }) diff --git a/src/containers/shared/components/Transaction/EscrowCancel/test/EscrowCancelDescription.test.tsx b/src/containers/shared/components/Transaction/EscrowCancel/test/EscrowCancelDescription.test.tsx index d4d4a3776..25af99edc 100644 --- a/src/containers/shared/components/Transaction/EscrowCancel/test/EscrowCancelDescription.test.tsx +++ b/src/containers/shared/components/Transaction/EscrowCancel/test/EscrowCancelDescription.test.tsx @@ -8,7 +8,7 @@ describe('EscrowCancelDescription', () => { it('renders description for EscrowCancel', () => { const wrapper = createWrapper(EscrowCancel) expect(wrapper.html()).toBe( - '
    escrow_cancellation_desc
    The escrowed amount of\uE900135.79XRPwas returned to (\uE900135.78999XRP escrow_after_transaction_cost)
    The escrow was created bywith transactionA979AD...', + '
    escrow_cancellation_desc
    The escrowed amount of\uE900135.79XRPwas returned to (\uE900135.78999XRP escrow_after_transaction_cost)
    The escrow was created bywith transactionA979AD...', ) wrapper.unmount() }) diff --git a/src/containers/shared/components/Transaction/EscrowCreate/test/EscrowCreateDescription.test.tsx b/src/containers/shared/components/Transaction/EscrowCreate/test/EscrowCreateDescription.test.tsx index d55fa71f6..0c256b19e 100644 --- a/src/containers/shared/components/Transaction/EscrowCreate/test/EscrowCreateDescription.test.tsx +++ b/src/containers/shared/components/Transaction/EscrowCreate/test/EscrowCreateDescription.test.tsx @@ -8,7 +8,7 @@ describe('EscrowCreateDescription', () => { it('renders description for EscrowCreate', () => { const wrapper = createWrapper(EscrowCreate) expect(wrapper.html()).toBe( - 'The escrow is fromto
    escrow_condition A0258020886F982742772F414243855DC13B348FC78FB3D5119412C8A6480114E36A4451810120
    escrowed_amount \uE900997.50XRP
    describe_cancel_after March 1, 2020 at 8:54:20 AM UTC
    describe_finish_after March 1, 2020 at 9:01:00 AM UTC
    ', + 'The escrow is fromto
    escrow_condition A0258020886F982742772F414243855DC13B348FC78FB3D5119412C8A6480114E36A4451810120
    escrowed_amount \uE900997.50XRP
    describe_cancel_after March 1, 2020 at 8:54:20 AM UTC
    describe_finish_after March 1, 2020 at 9:01:00 AM UTC
    ', ) wrapper.unmount() }) diff --git a/src/containers/shared/components/Transaction/EscrowFinish/test/EscrowFinishDescription.test.tsx b/src/containers/shared/components/Transaction/EscrowFinish/test/EscrowFinishDescription.test.tsx index eba92bc6e..558762aa2 100644 --- a/src/containers/shared/components/Transaction/EscrowFinish/test/EscrowFinishDescription.test.tsx +++ b/src/containers/shared/components/Transaction/EscrowFinish/test/EscrowFinishDescription.test.tsx @@ -8,7 +8,7 @@ describe('EscrowFinishDescription', () => { it('renders description for EscrowFinish', () => { const wrapper = createWrapper(EscrowFinish) expect(wrapper.html()).toBe( - '
    escrow_completion_desc
    The escrowed amount of\uE9000.0154XRPwas delivered to (\uE9000.015388XRP escrow_after_transaction_cost)
    The escrow was created bywith transaction3E2E75...
    escrow_finish_fullfillment_desc Fulfillment
    ', + '
    escrow_completion_desc
    The escrowed amount of\uE9000.0154XRPwas delivered to (\uE9000.015388XRP escrow_after_transaction_cost)
    The escrow was created bywith transaction3E2E75...
    escrow_finish_fullfillment_desc Fulfillment
    ', ) wrapper.unmount() }) diff --git a/src/containers/shared/components/Transaction/NFTokenAcceptOffer/test/NFTokenAcceptOfferSimple.test.jsx b/src/containers/shared/components/Transaction/NFTokenAcceptOffer/test/NFTokenAcceptOfferSimple.test.tsx similarity index 100% rename from src/containers/shared/components/Transaction/NFTokenAcceptOffer/test/NFTokenAcceptOfferSimple.test.jsx rename to src/containers/shared/components/Transaction/NFTokenAcceptOffer/test/NFTokenAcceptOfferSimple.test.tsx diff --git a/src/containers/shared/components/Transaction/NFTokenBurn/test/NFTokenBurnSimple.test.jsx b/src/containers/shared/components/Transaction/NFTokenBurn/test/NFTokenBurnSimple.test.tsx similarity index 100% rename from src/containers/shared/components/Transaction/NFTokenBurn/test/NFTokenBurnSimple.test.jsx rename to src/containers/shared/components/Transaction/NFTokenBurn/test/NFTokenBurnSimple.test.tsx diff --git a/src/containers/shared/components/Transaction/NFTokenCancelOffer/test/NFTokenCancelOfferSimple.test.jsx b/src/containers/shared/components/Transaction/NFTokenCancelOffer/test/NFTokenCancelOfferSimple.test.tsx similarity index 100% rename from src/containers/shared/components/Transaction/NFTokenCancelOffer/test/NFTokenCancelOfferSimple.test.jsx rename to src/containers/shared/components/Transaction/NFTokenCancelOffer/test/NFTokenCancelOfferSimple.test.tsx diff --git a/src/containers/shared/components/Transaction/NFTokenCreateOffer/test/NFTokenCreateOfferSimple.test.jsx b/src/containers/shared/components/Transaction/NFTokenCreateOffer/test/NFTokenCreateOfferSimple.test.tsx similarity index 100% rename from src/containers/shared/components/Transaction/NFTokenCreateOffer/test/NFTokenCreateOfferSimple.test.jsx rename to src/containers/shared/components/Transaction/NFTokenCreateOffer/test/NFTokenCreateOfferSimple.test.tsx diff --git a/src/containers/shared/components/Transaction/NFTokenMint/test/NFTokenMintSimple.test.jsx b/src/containers/shared/components/Transaction/NFTokenMint/test/NFTokenMintSimple.test.tsx similarity index 99% rename from src/containers/shared/components/Transaction/NFTokenMint/test/NFTokenMintSimple.test.jsx rename to src/containers/shared/components/Transaction/NFTokenMint/test/NFTokenMintSimple.test.tsx index 0ce68de1c..1da139efa 100644 --- a/src/containers/shared/components/Transaction/NFTokenMint/test/NFTokenMintSimple.test.jsx +++ b/src/containers/shared/components/Transaction/NFTokenMint/test/NFTokenMintSimple.test.tsx @@ -144,7 +144,7 @@ describe('NFTokenMint', () => { 'token-uri', convertHexToString( '516D5071416B3677777577796A71654C476F64665253375156774677394346736A6D363375485661556438387463', - ), + ) as string, ) wrapper.unmount() }) @@ -182,7 +182,7 @@ describe('NFTokenMint', () => { 'token-uri', convertHexToString( '516D5071416B3677777577796A71654C476F64665253375156774677394346736A6D363375485661556438387463', - ), + ) as string, ) wrapper.unmount() }) diff --git a/src/containers/shared/components/Transaction/OfferCreate/test/OfferCreateDescription.test.tsx b/src/containers/shared/components/Transaction/OfferCreate/test/OfferCreateDescription.test.tsx index 25d08654c..fd467dcde 100644 --- a/src/containers/shared/components/Transaction/OfferCreate/test/OfferCreateDescription.test.tsx +++ b/src/containers/shared/components/Transaction/OfferCreate/test/OfferCreateDescription.test.tsx @@ -10,7 +10,7 @@ describe('OfferCreate: Description', () => { const wrapper = createWrapper(OfferCreate) expect(wrapper.html()).toBe( - '
    The accountoffered to pay1,080,661.95882CSCin order to receive\uE9001,764.293151XRP
    offer_create_desc_line_2 612.52XRP/CSC
    offer_create_desc_line_3 44866443
    The offer expiresMay 18, 2022 at 5:28:16 PM UTCunless cancelled before', + '
    The accountoffered to pay1,080,661.95882CSCin order to receive\uE9001,764.293151XRP
    offer_create_desc_line_2 612.52XRP/CSC
    offer_create_desc_line_3 44866443
    The offer expiresMay 18, 2022 at 5:28:16 PM UTCunless cancelled before', ) wrapper.unmount() }) @@ -19,7 +19,7 @@ describe('OfferCreate: Description', () => { const wrapper = createWrapper(OfferCreateInvertedCurrencies) expect(wrapper.html()).toBe( - '
    The accountoffered to pay\uE90017,588.363594XRPin order to receive$6,101.33033905USD
    offer_create_desc_line_2 0.34690XRP/USD
    offer_create_desc_line_3 80543309
    ', + '
    The accountoffered to pay\uE90017,588.363594XRPin order to receive$6,101.33033905USD
    offer_create_desc_line_2 0.34690XRP/USD
    offer_create_desc_line_3 80543309
    ', ) wrapper.unmount() }) diff --git a/src/containers/shared/components/Transaction/TrustSet/test/TrustSetDescription.test.tsx b/src/containers/shared/components/Transaction/TrustSet/test/TrustSetDescription.test.tsx index e9331d2a4..c1826319f 100644 --- a/src/containers/shared/components/Transaction/TrustSet/test/TrustSetDescription.test.tsx +++ b/src/containers/shared/components/Transaction/TrustSet/test/TrustSetDescription.test.tsx @@ -11,7 +11,7 @@ describe('TrustSet: Description', () => { it('renders description for authorize', () => { const wrapper = createWrapper(mockTrustSet) expect(wrapper.html()).toBe( - `
    It establishes CN¥1,000,000,000.00 as the maximum amount of CNY from that is willing to hold
    `, + `
    It establishes CN¥1,000,000,000.00 as the maximum amount of CNY from that is willing to hold
    `, ) wrapper.unmount() }) diff --git a/src/containers/shared/components/test/Account.test.tsx b/src/containers/shared/components/test/Account.test.tsx index 50e48f5c9..958463089 100644 --- a/src/containers/shared/components/test/Account.test.tsx +++ b/src/containers/shared/components/test/Account.test.tsx @@ -1,104 +1,75 @@ -import { mount } from 'enzyme' import { I18nextProvider } from 'react-i18next' import { BrowserRouter } from 'react-router-dom' +import { cleanup, render, screen } from '@testing-library/react' import i18n from '../../../../i18n/testConfig' import { Account } from '../Account' -const createWrapper = (component: JSX.Element) => - mount( +const renderComponent = (component: JSX.Element) => + render( {component} , ) +const ACCOUNT = 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt' +const ACCOUNT_PLUS_DT = `${ACCOUNT}:381702` + describe('Account', () => { + afterEach(cleanup) it('should render with a link', () => { - const wrapper = createWrapper( - , - ) - const anchor = wrapper.find('a') - expect(anchor).toHaveClassName('account') - expect(anchor).toHaveText('rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(anchor).toHaveProp( - 'href', - '/accounts/rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt', - ) - expect(anchor).toHaveProp('title', 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(wrapper.find('.dt')).not.toExist() - wrapper.unmount() + renderComponent() + const element = screen.getByTestId('account') + expect(element).toHaveClass('account') + expect(element).toHaveTextContent(ACCOUNT) + expect(element).toHaveAttribute('href', `/accounts/${ACCOUNT}`) + expect(element).toHaveAttribute('title', ACCOUNT) + expect(screen.queryByTestId('dt')).toBeNull() }) it('should render without a link', () => { - const wrapper = createWrapper( - , - ) - const address = wrapper.find('.account').hostNodes() - expect(address).toHaveText('rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(address).not.toHaveDisplayName('a') - expect(address).toHaveProp('title', 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(wrapper.find('.dt')).not.toExist() - wrapper.unmount() + renderComponent() + const element = screen.getByTestId('account') + expect(element).toHaveTextContent(ACCOUNT) + expect(element).not.toHaveAttribute('href') + expect(element).toHaveAttribute('title', ACCOUNT) + expect(screen.queryByTestId('dt')).toBeNull() }) it('should render with a destination tag', () => { - const wrapper = createWrapper( - , - ) - const anchor = wrapper.find('a') - expect(anchor).toHaveClassName('account') - expect(anchor).toHaveText('rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(anchor).toHaveProp( - 'href', - '/accounts/rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt', - ) - expect(anchor).toHaveProp('title', 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(wrapper.find('.dt')).toHaveText(':381702') - wrapper.unmount() + renderComponent() + const element = screen.getByTestId('account') + expect(element).toHaveClass('account') + expect(element).toHaveTextContent(ACCOUNT) + expect(element).toHaveAttribute('href', `/accounts/${ACCOUNT}`) + expect(element).toHaveAttribute('title', ACCOUNT) + expect(screen.queryByTestId('dt')).toHaveTextContent(':381702') }) it('should render with a destination tag and no link', () => { - const wrapper = createWrapper( - , - ) - const address = wrapper.find('.account') - expect(address).toHaveText('rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(address).not.toHaveDisplayName('a') - expect(address).toHaveProp('title', 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(wrapper.find('.dt')).toHaveText(':381702') - wrapper.unmount() + renderComponent() + const element = screen.getByTestId('account') + expect(element).toHaveClass('account') + expect(element).toHaveTextContent(ACCOUNT) + expect(element).not.toHaveAttribute('href') + expect(element).toHaveAttribute('title', ACCOUNT) + expect(screen.queryByTestId('dt')).toHaveTextContent(':381702') }) it('should render with a destination tag supplied separately', () => { - const wrapper = createWrapper( - , - ) - const anchor = wrapper.find('a') - expect(anchor).toHaveClassName('account') - expect(anchor).toHaveText('rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(anchor).toHaveProp( - 'href', - '/accounts/rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt', - ) - expect(anchor).toHaveProp('title', 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(wrapper.find('.dt')).toHaveText(':123') - wrapper.unmount() + renderComponent() + const element = screen.getByTestId('account') + expect(element).toHaveClass('account') + expect(element).toHaveTextContent(ACCOUNT) + expect(element).toHaveAttribute('href', `/accounts/${ACCOUNT}`) + expect(element).toHaveAttribute('title', ACCOUNT) + expect(screen.queryByTestId('dt')).toHaveTextContent(':123') }) it('should render with a destination tag supplied separately and no link', () => { - const wrapper = createWrapper( - , - ) - const address = wrapper.find('.account') - expect(address).toHaveText('rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(address).not.toHaveDisplayName('a') - expect(address).toHaveProp('title', 'rHWcuuZoFvDS6gNbmHSdpb7u1hZzxvCoMt') - expect(wrapper.find('.dt')).toHaveText(':123') - wrapper.unmount() + renderComponent() + const element = screen.getByTestId('account') + expect(element).toHaveTextContent(ACCOUNT) + expect(element).not.toHaveAttribute('href') + expect(element).toHaveAttribute('title', ACCOUNT) + expect(screen.queryByTestId('dt')).toHaveTextContent(':123') }) }) diff --git a/src/containers/shared/components/test/Amount.test.tsx b/src/containers/shared/components/test/Amount.test.tsx index 749f62033..a1c226587 100644 --- a/src/containers/shared/components/test/Amount.test.tsx +++ b/src/containers/shared/components/test/Amount.test.tsx @@ -1,6 +1,6 @@ import { I18nextProvider } from 'react-i18next' import { BrowserRouter } from 'react-router-dom' -import { mount } from 'enzyme' +import { cleanup, render, screen } from '@testing-library/react' import { useQuery } from 'react-query' import { Amount } from '../Amount' import i18n from '../../../../i18n/testConfig' @@ -11,8 +11,9 @@ jest.mock('react-query', () => ({ })) describe('Amount', () => { - const createWrapper = (component: JSX.Element) => - mount( + afterEach(cleanup) + const renderComponent = (component: JSX.Element) => + render( {component} , @@ -25,12 +26,13 @@ describe('Amount', () => { issuer: 'rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E', } - const wrapper = createWrapper() - expect(wrapper.find('.currency').text()).toEqual( + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent( 'DYM.rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E', ) - expect(wrapper.find('.amount-localized').text()).toEqual('95.13258523') - wrapper.unmount() + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '95.13258523', + ) }) it('handles currency codes with standard symbols', () => { @@ -40,25 +42,29 @@ describe('Amount', () => { issuer: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', } - const wrapper = createWrapper() - expect(wrapper.find('.currency').text()).toEqual( + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent( 'JPY.rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', ) - expect(wrapper.find('.amount-localized').text()).toEqual('¥4,986.30908733') - wrapper.unmount() + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '¥4,986.30908733', + ) + }) + it('handles currency codes with standard symbols', () => { const value2 = { amount: 78.5098894970562, currency: 'GBP', issuer: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', } - const wrapper2 = createWrapper() - expect(wrapper2.find('.currency').text()).toEqual( + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent( 'GBP.rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', ) - expect(wrapper2.find('.amount-localized').text()).toEqual('£78.5098895') - wrapper2.unmount() + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '£78.5098895', + ) }) it('handles currency codes that are 4 characters ', () => { @@ -68,12 +74,13 @@ describe('Amount', () => { issuer: 'rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E', } - const wrapper = createWrapper() - expect(wrapper.find('.currency').text()).toEqual( + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent( 'WOOT.rGwUWgN5BEg3QGNY3RX2HfYowjUTZdid3E', ) - expect(wrapper.find('.amount-localized').text()).toEqual('95.13258523') - wrapper.unmount() + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '95.13258523', + ) }) it('handles currency codes that are 40 characters ', () => { @@ -82,12 +89,13 @@ describe('Amount', () => { currency: '0158415500000000C1F76FF6ECB0BAC600000000', issuer: 'rrh7rf1gV2pXAoqA8oYbpHd8TKv5ZQeo67', } - const wrapper = createWrapper() - expect(wrapper.find('.currency').text()).toEqual( + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent( 'XAUÁ÷oöì°ºÆ.rrh7rf1gV2pXAoqA8oYbpHd8TKv5ZQeo67', ) - expect(wrapper.find('.amount-localized').text()).toEqual('3.6923854') - wrapper.unmount() + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '3.6923854', + ) }) it('handles currency codes that are 40 characters and hidden issuer', () => { @@ -96,32 +104,29 @@ describe('Amount', () => { currency: '0158415500000000C1F76FF6ECB0BAC600000000', issuer: 'rrh7rf1gV2pXAoqA8oYbpHd8TKv5ZQeo67', } - const wrapper = createWrapper( - , + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent('XAUÁ÷oöì°ºÆ') + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '3.6923854', ) - expect(wrapper.find('.currency').text()).toEqual('XAUÁ÷oöì°ºÆ') - expect(wrapper.find('.amount-localized').text()).toEqual('3.6923854') - wrapper.unmount() }) it('handles XRP-style amounts', () => { const value = '1000' - const wrapper = createWrapper( - , + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent('XRP') + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '\uE9000.001', ) - expect(wrapper.find('.currency').text()).toEqual('XRP') - expect(wrapper.find('.amount-localized').text()).toEqual('\uE9000.001') - wrapper.unmount() }) it('handles modifier', () => { const value = '9000' - const wrapper = createWrapper( - , + renderComponent() + expect(screen.getByTestId('currency')).toHaveTextContent('XRP') + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '+\uE9000.009', ) - expect(wrapper.find('.currency').text()).toEqual('XRP') - expect(wrapper.find('.amount-localized').text()).toEqual('+\uE9000.009') - wrapper.unmount() }) it('handles MPT amount', async () => { @@ -146,11 +151,11 @@ describe('Amount', () => { currency: '0000098F03B3BCE934EE8CAA1DF25A42032388361B9E5A65', isMPT: true, } - const wrapper = createWrapper( - , - ) + renderComponent() + screen.debug() - expect(wrapper.find('.amount-localized').text()).toEqual('1,043.001') - wrapper.unmount() + expect(screen.getByTestId('amount-localized')).toHaveTextContent( + '1,043.001', + ) }) }) diff --git a/src/containers/shared/components/test/Currency.test.tsx b/src/containers/shared/components/test/Currency.test.tsx index b58c68c13..9ad590687 100644 --- a/src/containers/shared/components/test/Currency.test.tsx +++ b/src/containers/shared/components/test/Currency.test.tsx @@ -1,38 +1,41 @@ import { BrowserRouter } from 'react-router-dom' -import { mount } from 'enzyme' +import { cleanup, render, screen } from '@testing-library/react' import Currency from '../Currency' describe('Currency', () => { + afterEach(cleanup) it('handles currency codes that are 3 characters ', () => { - const wrapper = mount() - expect(wrapper.find('.currency').text()).toEqual('BTC') - wrapper.unmount() + render() + const element = screen.getByTestId('currency') + expect(element).toHaveClass('currency') + expect(element).toHaveTextContent('BTC') }) it('handles currency codes that are 4 characters ', () => { - const wrapper = mount() - expect(wrapper.find('.currency').text()).toEqual('WOOT') - wrapper.unmount() + render() + const element = screen.getByTestId('currency') + expect(element).toHaveClass('currency') + expect(element).toHaveTextContent('WOOT') }) it('handles currency codes that are 4 characters and include issuer ', () => { - const wrapper = mount( + render( , ) - expect(wrapper.find('.currency').text()).toEqual('USD.davi') - wrapper.unmount() + const element = screen.getByTestId('currency') + expect(element).toHaveClass('currency') + expect(element).toHaveTextContent('USD.davi') }) it('handles currency codes that are 40 characters ', () => { - const wrapper = mount( - , - ) - expect(wrapper.find('.currency').text()).toEqual('XMETA') - wrapper.unmount() + render() + const element = screen.getByTestId('currency') + expect(element).toHaveClass('currency') + expect(element).toHaveTextContent('XMETA') }) it('handles currency codes that are 40 characters and issuer ', () => { - const wrapper = mount( + render( { , ) - const meta = wrapper.find('.currency').at(0) - const usd = wrapper.find('.currency').at(1) + const elements = screen.getAllByTestId('currency') + expect(elements).toHaveLength(2) + expect(elements[0]).toHaveClass('currency') + expect(elements[1]).toHaveClass('currency') + + const meta = elements[0] + const usd = elements[1] - expect(meta).toHaveText('XMETA.r3XwJ1hr1PtbRvbhuUkybV6tmYzzA11WcB') - expect(meta.find('a')).toHaveProp( + expect(meta).toHaveTextContent('XMETA.r3XwJ1hr1PtbRvbhuUkybV6tmYzzA11WcB') + expect(meta).toHaveAttribute( 'href', '/token/584D455441000000000000000000000000000000.r3XwJ1hr1PtbRvbhuUkybV6tmYzzA11WcB', ) - expect(usd).toHaveText('USD.rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq') - expect(usd.find('a')).toHaveProp( + expect(usd).toHaveTextContent('USD.rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq') + expect(usd).toHaveAttribute( 'href', '/token/USD.rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq', ) - wrapper.unmount() }) it('handle non-standard currency decoded to equal or fewer than 3 characters', () => { - const wrapper = mount( - , - ) - expect(wrapper.find('.currency').text()).toEqual('FakeXRP') + render() + const element = screen.getByTestId('currency') + expect(element).toHaveClass('currency') + expect(element).toHaveTextContent('FakeXRP') }) it('displays the XRP symbol when rendering XRP', () => { - const wrapper = mount() - expect(wrapper.find('.currency').text()).toEqual('\uE900 XRP') - wrapper.unmount() + render() + const element = screen.getByTestId('currency') + expect(element).toHaveClass('currency') + expect(element).toHaveTextContent('\uE900 XRP') }) it('handles MPT ID ', () => { - const wrapper = mount( + render( { /> , ) - const mpt = wrapper.find('.currency').at(0) + const mpt = screen.getByTestId('currency') - expect(mpt).toHaveText( + expect(mpt).toHaveTextContent( 'MPT (00000BDE5B4F868ECE457207E2C1750065987730B8839E0D)', ) - expect(mpt.find('a')).toHaveProp( + expect(mpt).toHaveAttribute( 'href', '/mpt/00000BDE5B4F868ECE457207E2C1750065987730B8839E0D', ) - wrapper.unmount() }) }) diff --git a/src/setupTests.ts b/src/setupTests.ts index e92887b90..722be5464 100644 --- a/src/setupTests.ts +++ b/src/setupTests.ts @@ -1,5 +1,6 @@ import 'dotenv/config' import 'jest-enzyme' +import '@testing-library/jest-dom/extend-expect' import { configure } from 'enzyme' import Adapter from 'enzyme-adapter-react-17-updated' diff --git a/tsconfig.json b/tsconfig.json index 34d66a11f..6d7cc1f1c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,7 @@ "dom.iterable", "esnext" ], - "types": ["jest"], + "types": ["jest", "@testing-library/jest-dom"], "typeRoots": [ "./node_modules/@types", "./@types"