Skip to content

Commit a93093f

Browse files
committed
test: Add test case.
1 parent aecb365 commit a93093f

File tree

3 files changed

+76
-2
lines changed

3 files changed

+76
-2
lines changed

package.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
"css:watch": "compile-less -d src -o esm --watch",
1414
"css:build:dist": "compile-less -d src --combine markdown.css --rm-global",
1515
"watch": "tsbb watch",
16-
"build": "tsbb build && npm run css:build && npm run css:build:dist"
16+
"build": "tsbb build && npm run css:build && npm run css:build:dist",
17+
"test": "tsbb test --env=jsdom",
18+
"coverage": "tsbb test --env=jsdom --coverage"
1719
},
1820
"repository": {
1921
"type": "git",
@@ -33,6 +35,11 @@
3335
"prismjs",
3436
"react-markdown"
3537
],
38+
"jest": {
39+
"transformIgnorePatterns": [
40+
"<rootDir>/node_modules/?!(.*)"
41+
]
42+
},
3643
"peerDependencies": {
3744
"react": ">=16.8.0",
3845
"react-dom": ">=16.8.0"
@@ -53,14 +60,17 @@
5360
"@kkt/scope-plugin-options": "6.11.0",
5461
"@types/react": "17.0.20",
5562
"@types/react-dom": "17.0.9",
63+
"@types/react-test-renderer": "17.0.1",
5664
"@uiw/react-codesandbox": "1.1.0",
5765
"@uiw/react-github-corners": "1.5.3",
5866
"@uiw/react-shields": "1.1.2",
5967
"@uiw/reset.css": "1.0.5",
6068
"compile-less-cli": "1.8.8",
6169
"kkt": "6.11.0",
70+
"jest": "27.1.1",
6271
"react": "17.0.2",
6372
"react-dom": "17.0.2",
73+
"react-test-renderer": "17.0.2",
6474
"tsbb": "3.1.5"
6575
},
6676
"eslintConfig": {

test/index.test.tsx

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import React, { useEffect, useRef } from 'react';
2+
import TestRenderer from 'react-test-renderer';
3+
import { render } from '@testing-library/react';
4+
import MarkdownPreview, { MarkdownPreviewRef } from '../src';
5+
6+
it('Should output a TestRenderer', async () => {
7+
const component = TestRenderer.create(<MarkdownPreview source="## Hello World!" />);
8+
let tree = component.toJSON();
9+
if (tree && !Array.isArray(tree)) {
10+
expect(tree.type).toEqual('div');
11+
expect(tree.props.disabled).toBeFalsy();
12+
expect(tree.props.onScroll).toBeUndefined();
13+
expect(tree.props.style).toBeUndefined();
14+
expect(tree.props.onMouseOver).toBeUndefined();
15+
expect(tree.props.className).toEqual('wmde-markdown wmde-markdown-color ');
16+
}
17+
});
18+
19+
it('Test case prefixCls props', async () => {
20+
const component = TestRenderer.create(<MarkdownPreview prefixCls="" source="" />);
21+
let tree = component.toJSON();
22+
if (tree && !Array.isArray(tree)) {
23+
expect(tree.type).toEqual('div');
24+
expect(tree.props.disabled).toBeFalsy();
25+
expect(tree.props.onScroll).toBeUndefined();
26+
expect(tree.props.style).toBeUndefined();
27+
expect(tree.props.onMouseOver).toBeUndefined();
28+
expect(tree.props.className).toEqual(' ');
29+
}
30+
});
31+
32+
it('MarkdownPreview anchor', async () => {
33+
const source = `### MarkdownPreview`;
34+
render(<MarkdownPreview source={source} />);
35+
const octicon = document.querySelector('.octicon-link');
36+
expect(Object.keys(octicon as any).length).toEqual(2);
37+
Object.keys(octicon as any).forEach((elm) => {
38+
const fiberNode = (octicon as any)[elm];
39+
expect(typeof fiberNode).toEqual('object');
40+
if (fiberNode['className']) {
41+
expect(fiberNode.className).toEqual('octicon octicon-link');
42+
expect(fiberNode.width).toEqual('16');
43+
expect(fiberNode.height).toEqual('16');
44+
expect(fiberNode['aria-hidden']).toEqual('true');
45+
}
46+
});
47+
});
48+
49+
it('MarkdownPreview Ref', async () => {
50+
const source = `### MarkdownPreview`;
51+
function Demo() {
52+
const ref = useRef<MarkdownPreviewRef>(null);
53+
useEffect(() => {
54+
if (ref.current) {
55+
expect(Object.keys(ref.current)).toEqual([ 'source', 'mdp' ]);
56+
}
57+
});
58+
return (
59+
<MarkdownPreview ref={ref} source={source} />
60+
);
61+
}
62+
render(<Demo />);
63+
});

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"noEmit": true
2424
},
2525
"include": [
26-
"website"
26+
"website",
27+
"test"
2728
]
2829
}

0 commit comments

Comments
 (0)