Fixtures
export default {
full: [
{
request: ArticleResource.list(),
params: { maxResults: 10 },
result: [
{
id: 5,
content: 'have a merry christmas',
author: 2,
contributors: [],
},
{
id: 532,
content: 'never again',
author: 23,
contributors: [5],
},
],
},
],
empty: [
{
request: ArticleResource.list(),
params: { maxResults: 10 },
result: [],
},
],
error: [
{
request: ArticleResource.list(),
params: { maxResults: 10 },
result: { message: 'Bad request', status: 400, name: 'Not Found' },
error: true,
},
],
loading: [],
};
Hook Unit Test
import { CacheProvider } from '@rest-hooks/react';
import { makeRenderRestHook } from '@rest-hooks/test';
import options from './fixtures';
const renderRestHook = makeRenderRestHook(CacheProvider);
it('should resolve list', async () => {
const { result } = renderRestHook(
() => {
return useSuspense(ArticleResource.list(), {
maxResults: 10,
});
},
{ initialFixtures: options.full },
);
expect(result.current).toBeDefined();
expect(result.current.length).toBe(2);
expect(result.current[0]).toBeInstanceOf(ArticleResource);
});
it('should throw errors on bad network', async () => {
const { result } = renderRestHook(
() => {
return useSuspense(ArticleResource.list(), {
maxResults: 10,
});
},
{ initialFixtures: options.error },
);
expect(result.error).toBeDefined();
expect((result.error as any).status).toBe(400);
});