Skip to content
This repository was archived by the owner on Mar 17, 2024. It is now read-only.

Commit 94fae58

Browse files
committed
add error handling test
1 parent 6a55b87 commit 94fae58

File tree

5 files changed

+81
-4
lines changed

5 files changed

+81
-4
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React from 'react';
2+
import { Digraph } from '../Digraph';
3+
import { DuplicatedRootClusterErrorMessage } from '../../utils/errors';
4+
import { renderExpectToThrow } from './utils/renderExpectToThrow';
5+
6+
describe('Digraph', () => {
7+
// eslint-disable-next-line jest/expect-expect
8+
test('An error occurs when duplicate <Digraph />', () => {
9+
renderExpectToThrow(
10+
<Digraph>
11+
<Digraph />
12+
</Digraph>,
13+
DuplicatedRootClusterErrorMessage,
14+
);
15+
});
16+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React from 'react';
2+
import { Graph } from '../Graph';
3+
import { DuplicatedRootClusterErrorMessage } from '../../utils/errors';
4+
import { renderExpectToThrow } from './utils/renderExpectToThrow';
5+
6+
describe('Graph', () => {
7+
// eslint-disable-next-line jest/expect-expect
8+
test('An error occurs when duplicate <Graph />', () => {
9+
renderExpectToThrow(
10+
<Graph>
11+
<Graph />
12+
</Graph>,
13+
DuplicatedRootClusterErrorMessage,
14+
);
15+
});
16+
});
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/* eslint-disable react/destructuring-assignment */
2+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
3+
import React, { Component, ReactElement } from 'react';
4+
import { Context } from 'ts-graphviz';
5+
import { render } from '../../../renderer/render';
6+
7+
export function renderExpectToThrow(element: ReactElement, expectedError: string) {
8+
const errors: Error[] = [];
9+
class ErrorBoundary extends Component<{}, { hasError: boolean }> {
10+
constructor(props: {}) {
11+
super(props);
12+
this.state = { hasError: false };
13+
}
14+
15+
static getDerivedStateFromError() {
16+
return { hasError: true };
17+
}
18+
19+
componentDidCatch(error: Error) {
20+
errors.push(error);
21+
}
22+
23+
render() {
24+
if (this.state.hasError) {
25+
return <></>;
26+
}
27+
return this.props.children;
28+
}
29+
}
30+
31+
const context = new Context();
32+
try {
33+
render(<ErrorBoundary>{element}</ErrorBoundary>, context);
34+
} catch (e) {
35+
errors.push(e);
36+
}
37+
38+
expect(errors.length).toBe(1);
39+
expect(errors[0].message).toContain(expectedError);
40+
}

src/renderer/__tests__/__snapshots__/to-dot.spec.tsx.snap renamed to src/renderer/__tests__/__snapshots__/render-to-dot.spec.tsx.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`toDot render edge 1`] = `
3+
exports[`renderToDot render edge 1`] = `
44
digraph {
55
"a";
66
"b";
77
"a" -> "b";
88
}
99
`;
1010

11-
exports[`toDot render subgraph 1`] = `
11+
exports[`renderToDot render subgraph 1`] = `
1212
digraph {
1313
subgraph {
1414
"a";
@@ -18,7 +18,7 @@ digraph {
1818
}
1919
`;
2020

21-
exports[`toDot render works 1`] = `
21+
exports[`renderToDot render works 1`] = `
2222
digraph {
2323
"a";
2424
"b";

src/renderer/__tests__/to-dot.spec.tsx renamed to src/renderer/__tests__/render-to-dot.spec.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Digraph } from '../../components/Digraph';
77
import { Node } from '../../components/Node';
88
import { renderToDot } from '../render';
99

10-
describe('toDot', () => {
10+
describe('renderToDot', () => {
1111
it('render works', () => {
1212
const dot = renderToDot(
1313
<Digraph>
@@ -45,4 +45,9 @@ describe('toDot', () => {
4545
);
4646
expect(dot).toBeValidDotAndMatchSnapshot();
4747
});
48+
49+
it('render to be blank string', () => {
50+
const dot = renderToDot(<></>);
51+
expect(dot).toBe('');
52+
});
4853
});

0 commit comments

Comments
 (0)