From ae2b3f096b2081b0dca6e78e8e2ae031b9b1ad05 Mon Sep 17 00:00:00 2001 From: Ildar Galeev Date: Mon, 17 Jul 2023 13:32:45 +0300 Subject: [PATCH] Add log to read json error (#214) --- src/app/backend/fetch-capi.spec.ts | 12 ++++++++---- src/app/backend/fetch-capi.ts | 7 ++++--- src/app/utils/guid.ts | 4 +++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/app/backend/fetch-capi.spec.ts b/src/app/backend/fetch-capi.spec.ts index 598f7cfbe..5bdf388e8 100644 --- a/src/app/backend/fetch-capi.spec.ts +++ b/src/app/backend/fetch-capi.spec.ts @@ -80,10 +80,12 @@ describe('fetch capi', () => { }); test('should catch json reject', async () => { - const mockFetch = jest.fn(); - mockFetch.mockResolvedValue({ + const errorMsg = 'Read json error'; + const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + + const mockFetch = jest.fn().mockResolvedValue({ status: 500, - json: async () => Promise.reject() + json: async () => Promise.reject(errorMsg) }); global.fetch = mockFetch; @@ -92,8 +94,10 @@ describe('fetch capi', () => { try { await fetchCapi({ endpoint, accessToken }); } catch (error) { - expect(error).toStrictEqual({ responseStatus: 500 }); + expect(error).toEqual(errorMsg); } + expect(errorSpy).toHaveBeenCalled(); + errorSpy.mockRestore(); }); test('should retry failed fetch requests', async () => { diff --git a/src/app/backend/fetch-capi.ts b/src/app/backend/fetch-capi.ts index fa7de9189..6b86434ae 100644 --- a/src/app/backend/fetch-capi.ts +++ b/src/app/backend/fetch-capi.ts @@ -1,4 +1,4 @@ -import { guid } from 'checkout/utils'; +import guid from 'checkout/utils/guid'; import delay from 'checkout/utils/delay'; export type FetchCapiParams = { @@ -13,7 +13,8 @@ const provideResponse = async (response: Response) => { const json = await response.json(); return response.status >= 200 && response.status <= 300 ? json : Promise.reject(json); } catch (ex) { - return Promise.reject({ responseStatus: response.status }); + console.error('Read response json error', ex); + return Promise.reject(ex); } }; @@ -39,7 +40,7 @@ const doFetch = async (param: FetchCapiParams, retryDelay: number, retryLimit: n } }; -export const fetchCapi = async (param: FetchCapiParams, retryDelay = 500, retryLimit = 20): Promise => { +export const fetchCapi = async (param: FetchCapiParams, retryDelay = 1000, retryLimit = 20): Promise => { const response = await doFetch(param, retryDelay, retryLimit); return provideResponse(response); }; diff --git a/src/app/utils/guid.ts b/src/app/utils/guid.ts index eff67aced..1433f1948 100644 --- a/src/app/utils/guid.ts +++ b/src/app/utils/guid.ts @@ -4,6 +4,8 @@ function s4() { .substring(1); } -export function guid() { +function guid() { return `${s4()}${s4()}-${s4()}${s4()}`; } + +export default guid;