Skip to content
Snippets Groups Projects
Commit 4a3f645f authored by Piotr Gawron's avatar Piotr Gawron
Browse files

provide error with stacktrace

parent 471c0e79
No related branches found
No related tags found
2 merge requests!223reset the pin numbers before search results are fetch (so the results will be...,!199Resolve "[MIN-321] form for reporting errors in minerva"
...@@ -4,6 +4,7 @@ import { ...@@ -4,6 +4,7 @@ import {
createStoreInstanceUsingSliceReducer, createStoreInstanceUsingSliceReducer,
} from '@/utils/createStoreInstanceUsingSliceReducer'; } from '@/utils/createStoreInstanceUsingSliceReducer';
import { HttpStatusCode } from 'axios'; import { HttpStatusCode } from 'axios';
import { unwrapResult } from '@reduxjs/toolkit';
import { ExportState } from './export.types'; import { ExportState } from './export.types';
import exportReducer from './export.slice'; import exportReducer from './export.slice';
import { apiPath } from '../apiPath'; import { apiPath } from '../apiPath';
...@@ -76,7 +77,7 @@ describe('export reducer', () => { ...@@ -76,7 +77,7 @@ describe('export reducer', () => {
mockedAxiosClient mockedAxiosClient
.onPost(apiPath.downloadNetworkCsv()) .onPost(apiPath.downloadNetworkCsv())
.reply(HttpStatusCode.NotFound, undefined); .reply(HttpStatusCode.NotFound, undefined);
const { payload, type } = await store.dispatch( const action = await store.dispatch(
downloadNetwork({ downloadNetwork({
annotations: [], annotations: [],
columns: [], columns: [],
...@@ -85,8 +86,8 @@ describe('export reducer', () => { ...@@ -85,8 +86,8 @@ describe('export reducer', () => {
submaps: [], submaps: [],
}), }),
); );
expect(type).toBe('export/downloadNetwork/rejected'); expect(action.type).toBe('export/downloadNetwork/rejected');
expect(payload).toBe( expect(() => unwrapResult(action)).toThrow(
"Failed to download network: The page you're looking for doesn't exist. Please verify the URL and try again.", "Failed to download network: The page you're looking for doesn't exist. Please verify the URL and try again.",
); );
const { loading } = store.getState().export.downloadNetwork; const { loading } = store.getState().export.downloadNetwork;
...@@ -135,7 +136,7 @@ describe('export reducer', () => { ...@@ -135,7 +136,7 @@ describe('export reducer', () => {
mockedAxiosClient mockedAxiosClient
.onPost(apiPath.downloadElementsCsv()) .onPost(apiPath.downloadElementsCsv())
.reply(HttpStatusCode.NotFound, undefined); .reply(HttpStatusCode.NotFound, undefined);
const { payload } = await store.dispatch( const action = await store.dispatch(
downloadElements({ downloadElements({
annotations: [], annotations: [],
columns: [], columns: [],
...@@ -147,7 +148,7 @@ describe('export reducer', () => { ...@@ -147,7 +148,7 @@ describe('export reducer', () => {
const { loading } = store.getState().export.downloadElements; const { loading } = store.getState().export.downloadElements;
expect(loading).toEqual('failed'); expect(loading).toEqual('failed');
expect(payload).toEqual( expect(() => unwrapResult(action)).toThrow(
"Failed to download elements: The page you're looking for doesn't exist. Please verify the URL and try again.", "Failed to download elements: The page you're looking for doesn't exist. Please verify the URL and try again.",
); );
}); });
......
...@@ -5,8 +5,8 @@ import { PROJECT_ID } from '@/constants'; ...@@ -5,8 +5,8 @@ import { PROJECT_ID } from '@/constants';
import { ExportNetwork, ExportElements } from '@/types/models'; import { ExportNetwork, ExportElements } from '@/types/models';
import { validateDataUsingZodSchema } from '@/utils/validateDataUsingZodSchema'; import { validateDataUsingZodSchema } from '@/utils/validateDataUsingZodSchema';
import { exportNetworkchema, exportElementsSchema } from '@/models/exportSchema'; import { exportNetworkchema, exportElementsSchema } from '@/models/exportSchema';
import { getErrorMessage } from '@/utils/getErrorMessage';
import { ThunkConfig } from '@/types/store'; import { ThunkConfig } from '@/types/store';
import { getError } from '@/utils/error-report/getError';
import { apiPath } from '../apiPath'; import { apiPath } from '../apiPath';
import { downloadFileFromBlob } from './export.utils'; import { downloadFileFromBlob } from './export.utils';
import { ELEMENTS_DOWNLOAD_ERROR_PREFIX, NETWORK_DOWNLOAD_ERROR_PREFIX } from './export.constants'; import { ELEMENTS_DOWNLOAD_ERROR_PREFIX, NETWORK_DOWNLOAD_ERROR_PREFIX } from './export.constants';
...@@ -24,7 +24,7 @@ export const downloadElements = createAsyncThunk< ...@@ -24,7 +24,7 @@ export const downloadElements = createAsyncThunk<
DownloadElementsBodyRequest, DownloadElementsBodyRequest,
ThunkConfig ThunkConfig
// eslint-disable-next-line consistent-return // eslint-disable-next-line consistent-return
>('export/downloadElements', async (data, { rejectWithValue }) => { >('export/downloadElements', async data => {
try { try {
const response = await axiosInstanceNewAPI.post<ExportElements>( const response = await axiosInstanceNewAPI.post<ExportElements>(
apiPath.downloadElementsCsv(), apiPath.downloadElementsCsv(),
...@@ -40,9 +40,7 @@ export const downloadElements = createAsyncThunk< ...@@ -40,9 +40,7 @@ export const downloadElements = createAsyncThunk<
downloadFileFromBlob(response.data, `${PROJECT_ID}-elementExport.csv`); downloadFileFromBlob(response.data, `${PROJECT_ID}-elementExport.csv`);
} }
} catch (error) { } catch (error) {
const errorMessage = getErrorMessage({ error, prefix: ELEMENTS_DOWNLOAD_ERROR_PREFIX }); return Promise.reject(getError({ error, prefix: ELEMENTS_DOWNLOAD_ERROR_PREFIX }));
return rejectWithValue(errorMessage);
} }
}); });
...@@ -57,7 +55,7 @@ type DownloadNetworkBodyRequest = { ...@@ -57,7 +55,7 @@ type DownloadNetworkBodyRequest = {
export const downloadNetwork = createAsyncThunk<undefined, DownloadNetworkBodyRequest, ThunkConfig>( export const downloadNetwork = createAsyncThunk<undefined, DownloadNetworkBodyRequest, ThunkConfig>(
'export/downloadNetwork', 'export/downloadNetwork',
// eslint-disable-next-line consistent-return // eslint-disable-next-line consistent-return
async (data, { rejectWithValue }) => { async data => {
try { try {
const response = await axiosInstanceNewAPI.post<ExportNetwork>( const response = await axiosInstanceNewAPI.post<ExportNetwork>(
apiPath.downloadNetworkCsv(), apiPath.downloadNetworkCsv(),
...@@ -73,9 +71,7 @@ export const downloadNetwork = createAsyncThunk<undefined, DownloadNetworkBodyRe ...@@ -73,9 +71,7 @@ export const downloadNetwork = createAsyncThunk<undefined, DownloadNetworkBodyRe
downloadFileFromBlob(response.data, `${PROJECT_ID}-networkExport.csv`); downloadFileFromBlob(response.data, `${PROJECT_ID}-networkExport.csv`);
} }
} catch (error) { } catch (error) {
const errorMessage = getErrorMessage({ error, prefix: NETWORK_DOWNLOAD_ERROR_PREFIX }); return Promise.reject(getError({ error, prefix: NETWORK_DOWNLOAD_ERROR_PREFIX }));
return rejectWithValue(errorMessage);
} }
}, },
); );
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment