Skip to content

Commit 07598be

Browse files
committed
test: Add test case.
1 parent d559c3a commit 07598be

File tree

4 files changed

+79
-15
lines changed

4 files changed

+79
-15
lines changed

package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
"prepare": "husky install && npm run build",
1414
"watch": "tsbb watch",
1515
"build": "tsbb build",
16+
"test": "tsbb test --env=jsdom",
17+
"coverage": "tsbb test --coverage",
1618
"doc": "kkt build --app-src ./website",
1719
"start": "kkt start --app-src ./website",
1820
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,html,less,md,json}'"
@@ -51,6 +53,7 @@
5153
"@codemirror/theme-one-dark": "0.19.0",
5254
"@codemirror/view": "0.19.4"
5355
},
56+
"jest": {},
5457
"eslintConfig": {
5558
"extends": [
5659
"react-app",
@@ -80,18 +83,21 @@
8083
"@kkt/scope-plugin-options": "6.11.0",
8184
"@types/react": "17.0.20",
8285
"@types/react-dom": "17.0.9",
86+
"@types/react-test-renderer": "17.0.1",
8387
"@uiw/react-github-corners": "1.5.1",
8488
"@uiw/react-markdown-preview": "3.3.0",
8589
"@uiw/react-shields": "1.1.1",
8690
"@uiw/reset.css": "1.0.5",
8791
"code-example": "3.0.6",
8892
"husky": "7.0.2",
93+
"jest": "27.1.0",
8994
"kkt": "6.11.0",
9095
"lint-staged": "11.1.2",
9196
"prettier": "2.3.2",
9297
"react": "17.0.2",
9398
"react-dom": "17.0.2",
94-
"tsbb": "3.0.4"
99+
"react-test-renderer": "17.0.2",
100+
"tsbb": "3.1.0"
95101
},
96102
"browserslist": {
97103
"production": [

src/theme/dark.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

test/index.test.tsx

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/* eslint-disable jest/no-conditional-expect */
2+
import React, { useEffect, useRef } from 'react';
3+
import renderer from 'react-test-renderer';
4+
import { render } from '@testing-library/react';
5+
// import '@testing-library/jest-dom';
6+
// import userEvent from '@testing-library/user-event';
7+
import CodeMirror, { ReactCodeMirrorRef } from '../src';
8+
9+
it('CodeMirror', async () => {
10+
const component = renderer.create(<CodeMirror />);
11+
let tree = component.toJSON();
12+
if (tree && !Array.isArray(tree)) {
13+
expect(tree.type).toEqual('div');
14+
expect(tree.props.className).toEqual('cm-theme-light');
15+
}
16+
});
17+
18+
it('CodeMirror onChange', async () => {
19+
render(
20+
<CodeMirror
21+
autoFocus
22+
value="console.log('Hello world!')"
23+
onChange={(value) => {
24+
expect(value).toEqual(`console.log('Hello world!')`);
25+
}}
26+
/>,
27+
);
28+
// const cont = document.querySelector('.cm-content');
29+
});
30+
31+
it('CodeMirror onUpdate', async () => {
32+
render(
33+
<CodeMirror
34+
value="console.log('Hello world!')"
35+
autoFocus
36+
onUpdate={(viewUpdate) => {
37+
expect(viewUpdate.state.doc.length).toEqual(27);
38+
}}
39+
/>,
40+
);
41+
});
42+
43+
it('CodeMirror ref', async () => {
44+
function Demo() {
45+
const ref = useRef<ReactCodeMirrorRef>(null);
46+
useEffect(() => {
47+
expect(Object.keys(ref.current!)).toEqual(['editor', 'state', 'view']);
48+
}, [ref]);
49+
50+
return <CodeMirror ref={ref} value="console.log('Hello world!')" />;
51+
}
52+
render(<Demo />);
53+
});
54+
55+
it('CodeMirror theme', async () => {
56+
const component = renderer.create(<CodeMirror theme="dark" />);
57+
let tree = component.toJSON();
58+
if (tree && !Array.isArray(tree)) {
59+
expect(tree.type).toEqual('div');
60+
expect(tree.props.className).toEqual('cm-theme-dark');
61+
}
62+
});
63+
64+
it('CodeMirror className', async () => {
65+
const component = renderer.create(<CodeMirror className="test" />);
66+
let tree = component.toJSON();
67+
if (tree && !Array.isArray(tree)) {
68+
expect(tree.type).toEqual('div');
69+
expect(tree.props.className).toEqual('cm-theme-light test');
70+
}
71+
});

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
"moduleResolution": "node",
1919
"noEmit": true
2020
},
21-
"include": ["src/**/*", "website/**/*", ".kktrc.ts"]
21+
"include": ["src/**/*", "website/**/*", "test/*", ".kktrc.ts"]
2222
}

0 commit comments

Comments
 (0)