Created test for HttpClient

This commit is contained in:
Alejandro Celaya 2022-11-17 21:30:42 +01:00
parent 9b3bdebb28
commit b8adf5f274
2 changed files with 37 additions and 2 deletions

View file

@ -1,5 +1,3 @@
export type MediaMatcher = (query: string) => MediaQueryList;
export type Fetch = typeof window.fetch;
export type JsonFetch = <T>(url: string, options?: RequestInit) => Promise<T>;

View file

@ -0,0 +1,37 @@
import { HttpClient } from '../../../src/common/services/HttpClient';
describe('HttpClient', () => {
const fetch = jest.fn();
const httpClient = new HttpClient(fetch);
beforeEach(jest.clearAllMocks);
describe('fetchJson', () => {
it('throws json when response is not ok', async () => {
const theError = { error: true, foo: 'bar' };
fetch.mockResolvedValue({ json: () => theError, ok: false });
await expect(httpClient.fetchJson('')).rejects.toEqual(theError);
});
it('return json when response is ok', async () => {
const theJson = { foo: 'bar' };
fetch.mockResolvedValue({ json: () => theJson, ok: true });
const result = await httpClient.fetchJson('');
expect(result).toEqual(theJson);
});
});
describe('fetchBlob', () => {
it('returns response as blob', async () => {
const theBlob = new Blob();
fetch.mockResolvedValue({ blob: () => theBlob });
const result = await httpClient.fetchBlob('');
expect(result).toEqual(theBlob);
});
});
});