Skip to content

Commit 20ec9de

Browse files
committed
test: add String test case.
1 parent 25fbb72 commit 20ec9de

File tree

4 files changed

+62
-29
lines changed

4 files changed

+62
-29
lines changed

core/src/comps/ReRender/Symbols.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ export const Quote = (props: { isNumber?: boolean } & React.HTMLAttributes<HTMLE
1616

1717
Quote.displayName = 'JVR.Quote';
1818

19-
export const ValueQuote = (props: { isNumber?: boolean } & React.HTMLAttributes<HTMLElement>) => {
19+
export const ValueQuote = (props: React.HTMLAttributes<HTMLElement>) => {
2020
const { ValueQuote: Comp = {} } = useSymbolsStore();
21-
const { isNumber, ...other } = props;
22-
if (isNumber) return null;
21+
const { ...other } = props;
2322
const { as, render, ...reset } = Comp;
2423
const Elm = as || 'span';
2524
const elmProps = { ...other, ...reset };

core/src/comps/ReRender/Types.tsx

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ export const TypeString: FC<TypeProps> = ({ children = '', expandKey, keyName })
6363
};
6464
if (childrenStr.length > length) {
6565
reset.onClick = () => {
66-
if (length && childrenStr.length <= length) return setShorten(false);
6766
setShorten(!shorten);
6867
};
6968
}
@@ -378,28 +377,3 @@ export const TypeNan: FC<TypeProps> = ({ children, expandKey, keyName }) => {
378377
};
379378

380379
TypeNan.displayName = 'JVR.TypeNan';
381-
382-
export const TypeEmptyValue: FC<TypeProps> = ({ children, expandKey, keyName }) => {
383-
const { Nan = {}, displayDataTypes } = useTypesStore();
384-
const { as, render, ...reset } = Nan;
385-
const Comp = as || 'span';
386-
const style: React.CSSProperties = {
387-
...defalutStyle,
388-
...(Nan.style || {}),
389-
};
390-
391-
const isRender = render && typeof render === 'function';
392-
const type = isRender && render({ ...reset, style }, { type: 'type', value: children });
393-
const child =
394-
isRender && render({ ...reset, children, className: 'w-rjv-value' }, { type: 'value', value: children });
395-
396-
return (
397-
<Fragment>
398-
{displayDataTypes && (type || <Comp {...reset} style={style} />)}
399-
{child}
400-
<Copied keyName={keyName} value={children as object} expandKey={expandKey} />
401-
</Fragment>
402-
);
403-
};
404-
405-
TypeEmptyValue.displayName = 'JVR.TypeEmptyValue';

core/src/symbol/Arrow.test.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,24 @@ it('renders <JsonView.Arrow /> test case', async () => {
2020
expect(arrow.tagName).toBe('svg');
2121
});
2222
});
23+
24+
it('renders <JsonView.Arrow /> test case', async () => {
25+
const demo = {
26+
value: '123',
27+
};
28+
const { container } = render(
29+
<JsonView value={demo}>
30+
<JsonView.Arrow
31+
render={() => {
32+
return <span data-testid="arrow">x</span>;
33+
}}
34+
/>
35+
</JsonView>,
36+
);
37+
expect(container.firstElementChild).toBeInstanceOf(Element);
38+
await waitFor(() => {
39+
const arrow = screen.getByTestId('arrow');
40+
expect(arrow.tagName).toBe('SPAN');
41+
expect(arrow.innerHTML).toBe('x');
42+
});
43+
});

core/src/types/String.test.tsx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import userEvent from '@testing-library/user-event';
2+
import { screen, render, waitFor } from '@testing-library/react';
3+
import JsonView from '..';
4+
5+
it('renders <JsonView.String /> test case', async () => {
6+
const user = userEvent.setup();
7+
const demo = {
8+
string: 'Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet',
9+
};
10+
const { container } = render(
11+
<JsonView value={demo}>
12+
<JsonView.String
13+
as="span"
14+
render={(props, { type, value }) => {
15+
expect(props.style).toHaveProperty('color', 'var(--w-rjv-type-string-color, #cb4b16)');
16+
if (type === 'type') {
17+
return <span {...props} data-testid="type" />;
18+
}
19+
return <span {...props} data-testid="value" />;
20+
}}
21+
/>
22+
</JsonView>,
23+
);
24+
expect(container.firstElementChild).toBeInstanceOf(Element);
25+
await waitFor(async () => {
26+
const type = screen.getByTestId('type');
27+
expect(type.className).toBe('w-rjv-type');
28+
expect(type.tagName).toBe('SPAN');
29+
expect(type.innerHTML).toBe('string');
30+
const value = screen.getByTestId('value');
31+
expect(value.className).toBe('w-rjv-value');
32+
expect(value.tagName).toBe('SPAN');
33+
expect(value.innerHTML).toBe('Lorem ipsum dolor si...');
34+
await user.click(value);
35+
expect(value.innerHTML).toBe(demo.string);
36+
await user.click(value);
37+
expect(value.innerHTML).toBe('Lorem ipsum dolor si...');
38+
});
39+
});

0 commit comments

Comments
 (0)