Skip to content

Commit ad4c609

Browse files
committed
test: add \semicolon` test case.
1 parent fa1c1e5 commit ad4c609

File tree

3 files changed

+76
-2
lines changed

3 files changed

+76
-2
lines changed

core/src/copied.test.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,36 @@ it('renders <Copied /> `show` test case', () => {
3030
expect(tree).toHaveProperty('props.className', 'w-rjv-copied');
3131
expect(tree).toHaveProperty('props.onClick');
3232
});
33+
34+
it('renders <Copied /> `show` test case', () => {
35+
function TriangleArrow(props: any) {
36+
const { style, ...reset } = props;
37+
const defaultStyle: React.CSSProperties = {
38+
cursor: 'pointer',
39+
height: '1em',
40+
width: '1em',
41+
...style,
42+
};
43+
return (
44+
<svg viewBox="0 0 24 24" fill="var(--w-rjv-arrow-color, currentColor)" style={defaultStyle} {...reset}>
45+
<path d="M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"></path>
46+
</svg>
47+
);
48+
}
49+
50+
const component = renderer.create(
51+
<Copied text={{ a: 1 }} show render={(props) => <TriangleArrow {...props}/>} />,
52+
);
53+
let tree = component.toJSON();
54+
expect(tree).toHaveProperty('type');
55+
expect(tree).toHaveProperty('props');
56+
expect(tree).toHaveProperty('children');
57+
expect(tree).toHaveProperty('type', 'svg');
58+
expect(tree).toHaveProperty('props.viewBox', '0 0 24 24');
59+
expect(tree).toHaveProperty('props.height', '1em');
60+
expect(tree).toHaveProperty('props.width', '1em');
61+
expect(tree).toHaveProperty('props.fill', 'var(--w-rjv-copied-color, currentColor)');
62+
expect(tree).toHaveProperty('props.style', { cursor: 'pointer', marginLeft: 5, height: '1em', width: '1em' });
63+
expect(tree).toHaveProperty('props.className', 'w-rjv-copied');
64+
expect(tree).toHaveProperty('props.onClick');
65+
});

core/src/semicolon.test.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import renderer from 'react-test-renderer';
2+
import { Semicolon } from './semicolon';
3+
4+
it('renders <Semicolon /> test case', () => {
5+
const component = renderer.create(
6+
<Semicolon>name</Semicolon>,
7+
);
8+
let tree = component.toJSON();
9+
expect(tree).toHaveProperty('type');
10+
expect(tree).toHaveProperty('props');
11+
expect(tree).toHaveProperty('children');
12+
expect(tree).toHaveProperty('children', ['name']);
13+
expect(tree).toHaveProperty('type', 'span');
14+
expect(tree).toHaveProperty('props.className', 'w-rjv-object-key');
15+
expect(tree).toHaveProperty('props.style', {
16+
color: undefined,
17+
fontSize: undefined,
18+
opacity: undefined,
19+
paddingRight: undefined
20+
});
21+
});
22+
23+
it('renders <Semicolon /> `render` test case', () => {
24+
const component = renderer.create(
25+
<Semicolon render={({ value, ...props }) => <del {...props} />}>name</Semicolon>,
26+
);
27+
let tree = component.toJSON();
28+
expect(tree).toHaveProperty('type');
29+
expect(tree).toHaveProperty('props');
30+
expect(tree).toHaveProperty('children');
31+
expect(tree).toHaveProperty('children', ['name']);
32+
expect(tree).toHaveProperty('type', 'del');
33+
expect(tree).toHaveProperty('props.className', 'w-rjv-object-key');
34+
expect(tree).toHaveProperty('props.style', {
35+
color: undefined,
36+
fontSize: undefined,
37+
opacity: undefined,
38+
paddingRight: undefined
39+
});
40+
});

core/src/semicolon.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC, PropsWithChildren, useId, cloneElement, useState, useMemo, useRef, useEffect } from 'react';
1+
import { FC, PropsWithChildren, useMemo, useRef, useEffect } from 'react';
22
import { Label, LabelProps } from './value';
33
import { JsonViewProps } from './';
44

@@ -26,6 +26,7 @@ export const Semicolon: FC<PropsWithChildren<SemicolonProps>> = ({
2626
show,
2727
highlightUpdates,
2828
quotes,
29+
style,
2930
...props
3031
}) => {
3132
const prevValue = usePrevious(value);
@@ -75,7 +76,7 @@ export const Semicolon: FC<PropsWithChildren<SemicolonProps>> = ({
7576
}, [isHighlight, value]);
7677

7778
const content = show ? `${quotes}${children}${quotes}` : children;
78-
if (render) return render({ className, ...props, value, style: { color }, children: content });
79+
if (render) return render({ className, ...props, value, style: { ...style, color }, children: content });
7980
return (
8081
<Label className={className} color={color} {...props} ref={highlightContainer}>
8182
{content}

0 commit comments

Comments
 (0)