Skip to content

Commit 7ecd37a

Browse files
committed
- Add basic tests
1 parent 8480e0a commit 7ecd37a

File tree

5 files changed

+174
-7
lines changed

5 files changed

+174
-7
lines changed

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,19 @@
4141
"react-dom": "17.0.2",
4242
"react-scripts": "^4.0.3",
4343
"typescript": "^4.2.4",
44-
"prettier": "^2.2.1"
44+
"prettier": "^2.2.1",
45+
"@testing-library/react": "^11.2.6",
46+
"@testing-library/user-event": "^13.1.8",
47+
"@testing-library/jest-dom": "^5.12.0",
48+
"@types/jest": "^26.0.23"
4549
},
4650
"scripts": {
4751
"prebuild:lib": "tsc -p tsconfig.lib.json",
4852
"build:lib": "NODE_ENV=production babel src/SimpleMdeReact.tsx --out-file lib/index.js --source-maps --extensions \".js\",\".jsx\",\".ts\",\".tsx\"",
4953
"prepare": "yarn build:lib",
5054
"demo": "react-scripts start",
51-
"build:demo": "react-scripts build"
55+
"build:demo": "react-scripts build",
56+
"test": "react-scripts test"
5257
},
5358
"eslintConfig": {
5459
"extends": [

src/SimpleMdeReact.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ export const SimpleMdeReact = React.forwardRef<
221221
useEffect(() => {
222222
if (editorRef.current) {
223223
editorRef.current?.toTextArea();
224-
// @ts-ignore
224+
// @ts-expect-error
225225
editorRef.current?.cleanup();
226226
}
227227

src/index.test.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import {act, render, screen} from "@testing-library/react";
2+
import { useState } from "react";
3+
import { SimpleMdeReact } from "SimpleMdeReact";
4+
import userEvent from "@testing-library/user-event";
5+
6+
// @ts-ignore
7+
Document.prototype.createRange = function () {
8+
return {
9+
setEnd: function () {},
10+
setStart: function () {},
11+
getBoundingClientRect: function () {
12+
return { right: 0 };
13+
},
14+
getClientRects: function () {
15+
return {
16+
length: 0,
17+
left: 0,
18+
right: 0,
19+
};
20+
},
21+
};
22+
};
23+
24+
const Editor = () => {
25+
const [value, setValue] = useState("");
26+
return <SimpleMdeReact value={value} onChange={setValue} />;
27+
};
28+
29+
describe("Renders", () => {
30+
it("succesfully", async () => {
31+
act(() => {
32+
render(<Editor />);
33+
});
34+
const editor = await screen.findByRole("textbox");
35+
userEvent.type(editor, "hello")
36+
expect(screen.getByText('hello')).toBeDefined()
37+
});
38+
});

src/setupTests.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import '@testing-library/jest-dom'

yarn.lock

Lines changed: 127 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@
11821182
dependencies:
11831183
regenerator-runtime "^0.13.4"
11841184

1185-
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.14.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
1185+
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
11861186
version "7.14.0"
11871187
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6"
11881188
integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==
@@ -1688,11 +1688,59 @@
16881688
"@svgr/plugin-svgo" "^5.5.0"
16891689
loader-utils "^2.0.0"
16901690

1691+
"@testing-library/dom@^7.28.1":
1692+
version "7.30.4"
1693+
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.30.4.tgz#c6a4a91557e92035fd565246bbbfb8107aa4634d"
1694+
integrity sha512-GObDVMaI4ARrZEXaRy4moolNAxWPKvEYNV/fa6Uc2eAzR/t4otS6A7EhrntPBIQLeehL9DbVhscvvv7gd6hWqA==
1695+
dependencies:
1696+
"@babel/code-frame" "^7.10.4"
1697+
"@babel/runtime" "^7.12.5"
1698+
"@types/aria-query" "^4.2.0"
1699+
aria-query "^4.2.2"
1700+
chalk "^4.1.0"
1701+
dom-accessibility-api "^0.5.4"
1702+
lz-string "^1.4.4"
1703+
pretty-format "^26.6.2"
1704+
1705+
"@testing-library/jest-dom@^5.12.0":
1706+
version "5.12.0"
1707+
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.12.0.tgz#6a5d340b092c44b7bce17a4791b47d9bc2c61443"
1708+
integrity sha512-N9Y82b2Z3j6wzIoAqajlKVF1Zt7sOH0pPee0sUHXHc5cv2Fdn23r+vpWm0MBBoGJtPOly5+Bdx1lnc3CD+A+ow==
1709+
dependencies:
1710+
"@babel/runtime" "^7.9.2"
1711+
"@types/testing-library__jest-dom" "^5.9.1"
1712+
aria-query "^4.2.2"
1713+
chalk "^3.0.0"
1714+
css "^3.0.0"
1715+
css.escape "^1.5.1"
1716+
lodash "^4.17.15"
1717+
redent "^3.0.0"
1718+
1719+
"@testing-library/react@^11.2.6":
1720+
version "11.2.6"
1721+
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.6.tgz#586a23adc63615985d85be0c903f374dab19200b"
1722+
integrity sha512-TXMCg0jT8xmuU8BkKMtp8l7Z50Ykew5WNX8UoIKTaLFwKkP2+1YDhOLA2Ga3wY4x29jyntk7EWfum0kjlYiSjQ==
1723+
dependencies:
1724+
"@babel/runtime" "^7.12.5"
1725+
"@testing-library/dom" "^7.28.1"
1726+
1727+
"@testing-library/user-event@^13.1.8":
1728+
version "13.1.8"
1729+
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2"
1730+
integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw==
1731+
dependencies:
1732+
"@babel/runtime" "^7.12.5"
1733+
16911734
"@types/anymatch@*":
16921735
version "1.3.1"
16931736
resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
16941737
integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
16951738

1739+
"@types/aria-query@^4.2.0":
1740+
version "4.2.1"
1741+
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b"
1742+
integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==
1743+
16961744
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
16971745
version "7.1.14"
16981746
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402"
@@ -1790,6 +1838,14 @@
17901838
dependencies:
17911839
"@types/istanbul-lib-report" "*"
17921840

1841+
"@types/jest@*", "@types/jest@^26.0.23":
1842+
version "26.0.23"
1843+
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7"
1844+
integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==
1845+
dependencies:
1846+
jest-diff "^26.0.0"
1847+
pretty-format "^26.0.0"
1848+
17931849
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
17941850
version "7.0.7"
17951851
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
@@ -1904,6 +1960,13 @@
19041960
dependencies:
19051961
"@types/estree" "*"
19061962

1963+
"@types/testing-library__jest-dom@^5.9.1":
1964+
version "5.9.5"
1965+
resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0"
1966+
integrity sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==
1967+
dependencies:
1968+
"@types/jest" "*"
1969+
19071970
"@types/uglify-js@*":
19081971
version "3.13.0"
19091972
resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124"
@@ -3224,7 +3287,15 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
32243287
escape-string-regexp "^1.0.5"
32253288
supports-color "^5.3.0"
32263289

3227-
chalk@^4.0.0:
3290+
chalk@^3.0.0:
3291+
version "3.0.0"
3292+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
3293+
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
3294+
dependencies:
3295+
ansi-styles "^4.1.0"
3296+
supports-color "^7.1.0"
3297+
3298+
chalk@^4.0.0, chalk@^4.1.0:
32283299
version "4.1.1"
32293300
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
32303301
integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
@@ -3805,6 +3876,11 @@ css-what@^3.2.1:
38053876
resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
38063877
integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
38073878

3879+
css.escape@^1.5.1:
3880+
version "1.5.1"
3881+
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
3882+
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
3883+
38083884
css@^2.0.0:
38093885
version "2.2.4"
38103886
resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
@@ -3815,6 +3891,15 @@ css@^2.0.0:
38153891
source-map-resolve "^0.5.2"
38163892
urix "^0.1.0"
38173893

3894+
css@^3.0.0:
3895+
version "3.0.0"
3896+
resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d"
3897+
integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==
3898+
dependencies:
3899+
inherits "^2.0.4"
3900+
source-map "^0.6.1"
3901+
source-map-resolve "^0.6.0"
3902+
38183903
cssdb@^4.4.0:
38193904
version "4.4.0"
38203905
resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0"
@@ -4178,6 +4263,11 @@ doctrine@^3.0.0:
41784263
dependencies:
41794264
esutils "^2.0.2"
41804265

4266+
dom-accessibility-api@^0.5.4:
4267+
version "0.5.4"
4268+
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166"
4269+
integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==
4270+
41814271
dom-converter@^0.2:
41824272
version "0.2.0"
41834273
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
@@ -6343,7 +6433,7 @@ jest-config@^26.6.3:
63436433
micromatch "^4.0.2"
63446434
pretty-format "^26.6.2"
63456435

6346-
jest-diff@^26.6.2:
6436+
jest-diff@^26.0.0, jest-diff@^26.6.2:
63476437
version "26.6.2"
63486438
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
63496439
integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==
@@ -7085,6 +7175,11 @@ lru-cache@^6.0.0:
70857175
dependencies:
70867176
yallist "^4.0.0"
70877177

7178+
lz-string@^1.4.4:
7179+
version "1.4.4"
7180+
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
7181+
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
7182+
70887183
magic-string@^0.25.0, magic-string@^0.25.7:
70897184
version "0.25.7"
70907185
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
@@ -7258,6 +7353,11 @@ mimic-fn@^2.1.0:
72587353
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
72597354
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
72607355

7356+
min-indent@^1.0.0:
7357+
version "1.0.1"
7358+
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
7359+
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
7360+
72617361
mini-css-extract-plugin@0.11.3:
72627362
version "0.11.3"
72637363
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6"
@@ -8828,7 +8928,7 @@ pretty-error@^2.1.1:
88288928
lodash "^4.17.20"
88298929
renderkid "^2.0.4"
88308930

8831-
pretty-format@^26.6.0, pretty-format@^26.6.2:
8931+
pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2:
88328932
version "26.6.2"
88338933
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
88348934
integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==
@@ -9271,6 +9371,14 @@ recursive-readdir@2.2.2:
92719371
dependencies:
92729372
minimatch "3.0.4"
92739373

9374+
redent@^3.0.0:
9375+
version "3.0.0"
9376+
resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
9377+
integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
9378+
dependencies:
9379+
indent-string "^4.0.0"
9380+
strip-indent "^3.0.0"
9381+
92749382
regenerate-unicode-properties@^8.2.0:
92759383
version "8.2.0"
92769384
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
@@ -10017,6 +10125,14 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
1001710125
source-map-url "^0.4.0"
1001810126
urix "^0.1.0"
1001910127

10128+
source-map-resolve@^0.6.0:
10129+
version "0.6.0"
10130+
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
10131+
integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
10132+
dependencies:
10133+
atob "^2.1.2"
10134+
decode-uri-component "^0.2.0"
10135+
1002010136
source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19:
1002110137
version "0.5.19"
1002210138
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
@@ -10344,6 +10460,13 @@ strip-final-newline@^2.0.0:
1034410460
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
1034510461
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
1034610462

10463+
strip-indent@^3.0.0:
10464+
version "3.0.0"
10465+
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
10466+
integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
10467+
dependencies:
10468+
min-indent "^1.0.0"
10469+
1034710470
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
1034810471
version "3.1.1"
1034910472
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"

0 commit comments

Comments
 (0)