UNPKG

@yoroi/common

Version:

The Common package of Yoroi SDK

70 lines (67 loc) 2.21 kB
"use strict"; var _fetcher = require("./fetcher"); var _errors = require("../errors/errors"); var _axios = _interopRequireDefault(require("axios")); var _axiosMockAdapter = _interopRequireDefault(require("axios-mock-adapter")); var _types = require("@yoroi/types"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // fetcher.test.ts // adjust the import to your file structure // adjust the import to your file structure const mock = new _axiosMockAdapter.default(_axios.default); describe('fetcher', () => { afterEach(() => { mock.reset(); }); it('fetches successfully', async () => { mock.onGet('/success').reply(200, { data: 'some data' }); const result = await (0, _fetcher.fetcher)({ url: '/success', method: 'GET' }); expect(result).toEqual({ data: 'some data' }); }); it('throws ApiError on status other than 2xx', async () => { mock.onGet('/error').reply(400, { message: 'Bad request' }); await expect((0, _fetcher.fetcher)({ url: '/error', method: 'GET' })).rejects.toThrow(_errors.ApiError); await expect((0, _fetcher.fetcher)({ url: '/error', method: 'GET' })).rejects.toHaveProperty('message', 'Api error: Bad request Status: 400'); }); it('throws NetworkError when no response received', async () => { // Simulating a network error by throwing an Axios-like error object mock.onGet('/network-error').reply(() => { return Promise.reject({ request: {} }); }); await expect((0, _fetcher.fetcher)({ url: '/network-error', method: 'GET' })).rejects.toThrow(_types.Api.Errors.Network); }); it('throws generic Error for other cases', async () => { mock.onGet('/unknown-error').reply(() => { throw new Error('Some unknown error'); }); await expect((0, _fetcher.fetcher)({ url: '/unknown-error', method: 'GET' })).rejects.toThrow(Error); await expect((0, _fetcher.fetcher)({ url: '/unknown-error', method: 'GET' })).rejects.toHaveProperty('message', 'An unknown error occurred'); }); }); //# sourceMappingURL=fetcher.test.js.map