chore(ui-toolkit): 4970 async renderer - improve error handling (#5063)

This commit is contained in:
Maciek 2023-10-18 11:11:05 +02:00 committed by GitHub
parent 6d2a2ea0a0
commit abf84b9d45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

View File

@ -2,8 +2,8 @@ import { render, act, screen } from '@testing-library/react';
import { AsyncRenderer } from './async-renderer';
describe('AsyncRenderer', () => {
const reload = jest.fn();
it('timeout error should render button', async () => {
const reload = jest.fn();
await act(() => {
render(
<AsyncRenderer
@ -20,4 +20,22 @@ describe('AsyncRenderer', () => {
});
expect(reload).toHaveBeenCalled();
});
it('errors should be handled properly', async () => {
const message = 'Node has been collapsed';
await act(() => {
render(
<AsyncRenderer
reload={reload}
error={new Error(message)}
loading={false}
data={[]}
/>
);
});
expect(
screen.getByText(`Something went wrong: ${message}`)
).toBeInTheDocument();
});
});

View File

@ -29,7 +29,7 @@ export function AsyncRenderer<T = object>({
reload,
}: AsyncRendererProps<T>) {
if (error) {
if (!data) {
if (!data || (Array.isArray(data) && !data.length)) {
return (
<div className="h-full flex items-center justify-center">
<div className="h-12 flex flex-col items-center">