Skip to content

Commit c594a49

Browse files
committed
test: update tests for fetch as you render pattern
1 parent 4d92b82 commit c594a49

2 files changed

Lines changed: 51 additions & 4 deletions

File tree

packages/react-isomorphic-data/src/__tests__/suspense.test.tsx

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@ import * as React from 'react';
22
import { FetchMock } from 'jest-fetch-mock';
33
import { render, wait } from '@testing-library/react';
44

5-
import { DataProvider, preloadData, createDataClient } from '../common';
6-
import { useDataClient } from '../hooks';
5+
import {
6+
useDataClient,
7+
withDataClient,
8+
DataProvider,
9+
preloadData,
10+
createDataClient,
11+
} from '../index';
12+
13+
import { DataClient } from '../common/types';
714

815
const fetchMock = fetch as FetchMock;
916

@@ -122,4 +129,45 @@ describe('render-as-you-fetch tests', () => {
122129

123130
expect(errorFallback).toBeDefined();
124131
});
132+
133+
it('Should fallback to Suspense boundary properly, with HOC', async () => {
134+
fetchMock.mockResponse(JSON.stringify({ message: 'Hello world!' }));
135+
const client = createDataClient();
136+
const url = 'http://localhost:3000/fetch-as-you-render-hoc';
137+
138+
const Component = (props: any) => {
139+
const data = props.resource.read();
140+
141+
return <div>{data.message}</div>;
142+
};
143+
const Wrapper = ({ client }: { client: DataClient }) => {
144+
const resource = preloadData(client, url);
145+
146+
return (
147+
<React.Suspense fallback={<div>Resource is not ready yet...</div>}>
148+
<Component resource={resource} />
149+
</React.Suspense>
150+
);
151+
};
152+
153+
const WrapperWithClient = withDataClient({ name: 'client' })(Wrapper);
154+
155+
const App = (
156+
<DataProvider client={client}>
157+
<WrapperWithClient />
158+
</DataProvider>
159+
);
160+
161+
const { findByText } = render(App);
162+
163+
const suspenseFallback = await findByText('Resource is not ready yet...');
164+
165+
expect(suspenseFallback).toBeDefined();
166+
167+
await wait();
168+
169+
const actualComponent = await findByText('Hello world!');
170+
171+
expect(actualComponent).toBeDefined();
172+
});
125173
});

packages/react-isomorphic-data/src/ssr/__tests__/renderToStringWithData.test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import * as React from 'react';
22
import { FetchMock } from 'jest-fetch-mock';
33

4-
import renderToStringWithData from '../renderToStringWithData';
4+
import { getDataFromTree, renderToStringWithData } from '../index';
55
import { DataProvider, createDataClient, retrieveFromCache } from '../../common';
66
import { useData, useLazyData } from '../../hooks';
77
import createPrefetchTags from '../createPrefetchTags';
88
import { withLazyData, withData } from '../../hoc';
9-
import getDataFromTree from '../getDataFromTree';
109

1110
const fetchMock = fetch as FetchMock;
1211

0 commit comments

Comments
 (0)