@yoroi/common
Version:
The Common package of Yoroi SDK
70 lines (67 loc) • 2.21 kB
JavaScript
;
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