59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
|
import { renderHook, waitFor } from '@testing-library/react';
|
||
|
import fetchMock from 'fetch-mock';
|
||
|
import {
|
||
|
GITHUB_VEGA_DEV_RELEASES,
|
||
|
GITHUB_VEGA_RELEASES,
|
||
|
useVegaReleases,
|
||
|
} from './use-vega-releases';
|
||
|
import {
|
||
|
GITHUB_VEGA_RELEASES_DATA,
|
||
|
GITHUB_VEGA_DEV_RELEASES_DATA,
|
||
|
} from './mocks/github-releases';
|
||
|
|
||
|
describe('useVegaReleases', () => {
|
||
|
afterEach(() => {
|
||
|
fetchMock.reset();
|
||
|
});
|
||
|
|
||
|
it('should return an empty list when request is unsuccessful', async () => {
|
||
|
fetchMock.get(GITHUB_VEGA_RELEASES, 404);
|
||
|
fetchMock.get(GITHUB_VEGA_DEV_RELEASES, 404);
|
||
|
|
||
|
const { result } = renderHook(() => useVegaReleases());
|
||
|
expect(result.current.loading).toBeTruthy();
|
||
|
await waitFor(() => {
|
||
|
expect(result.current.loading).toBeFalsy();
|
||
|
expect(result.current.data).toEqual([]);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should return a list of releases', async () => {
|
||
|
fetchMock.get(GITHUB_VEGA_RELEASES, GITHUB_VEGA_RELEASES_DATA);
|
||
|
fetchMock.get(GITHUB_VEGA_DEV_RELEASES, GITHUB_VEGA_DEV_RELEASES_DATA);
|
||
|
|
||
|
const { result } = renderHook(() => useVegaReleases());
|
||
|
expect(result.current.loading).toBeTruthy();
|
||
|
await waitFor(() => {
|
||
|
expect(result.current.loading).toBeFalsy();
|
||
|
expect(result.current).not.toEqual([]);
|
||
|
const data = result.current.data;
|
||
|
expect(data?.[0].tagName).toEqual('v0.70.3');
|
||
|
expect(data?.[0].htmlUrl).toEqual(
|
||
|
'https://github.com/vegaprotocol/vega/releases/tag/v0.70.3'
|
||
|
);
|
||
|
expect(data?.[1].tagName).toEqual('v0.70.2');
|
||
|
expect(data?.[2].tagName).toEqual('v0.70.1');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should return a list of releases including dev releases', async () => {
|
||
|
fetchMock.get(GITHUB_VEGA_RELEASES, GITHUB_VEGA_RELEASES_DATA);
|
||
|
fetchMock.get(GITHUB_VEGA_DEV_RELEASES, GITHUB_VEGA_DEV_RELEASES_DATA);
|
||
|
const { result } = renderHook(() => useVegaReleases(true));
|
||
|
await waitFor(() => {
|
||
|
expect(result.current.data?.length).toBeGreaterThan(30);
|
||
|
expect(fetchMock.calls().length).toEqual(2);
|
||
|
});
|
||
|
});
|
||
|
});
|