Skip to content

Commit bb08347

Browse files
authored
Merge pull request #1062 from equinor/fix/api-error-snackbar
fix/api-error-snackbar
2 parents 0af0710 + 2f1a78a commit bb08347

File tree

4 files changed

+4
-154
lines changed

4 files changed

+4
-154
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@equinor/amplify-component-lib",
3-
"version": "9.8.1",
3+
"version": "9.8.2",
44
"description": "Frontend Typescript components for the Amplify team",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/providers/SnackbarProvider/SnackbarProvider.test.tsx

+3-79
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
import { ReactNode } from 'react';
22

3-
import { ApiError } from '@equinor/subsurface-app-management';
4-
import { ApiRequestOptions } from '@equinor/subsurface-app-management/dist/api/core/ApiRequestOptions';
5-
import { ApiResult } from '@equinor/subsurface-app-management/dist/api/core/ApiResult';
63
import { faker } from '@faker-js/faker';
7-
import {
8-
QueryClient,
9-
QueryClientProvider,
10-
useQuery,
11-
} from '@tanstack/react-query';
4+
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
125

136
import {
147
ShowSnackbar,
@@ -17,26 +10,17 @@ import {
1710
} from 'src/providers/SnackbarProvider/SnackbarProvider';
1811
import { snackbarIcon } from 'src/providers/SnackbarProvider/SnackbarProvider.utils';
1912
import {
20-
render,
2113
renderHook,
2214
screen,
2315
userEvent,
2416
waitFor,
2517
} from 'src/tests/browsertest-utils';
2618

27-
function TestProviders({
28-
showAPIErrors = true,
29-
children,
30-
}: {
31-
showAPIErrors?: boolean;
32-
children: ReactNode;
33-
}) {
19+
function TestProviders({ children }: { children: ReactNode }) {
3420
const queryClient = new QueryClient();
3521
return (
3622
<QueryClientProvider client={queryClient}>
37-
<SnackbarProvider showAPIErrors={showAPIErrors}>
38-
{children}
39-
</SnackbarProvider>
23+
<SnackbarProvider>{children}</SnackbarProvider>
4024
</QueryClientProvider>
4125
);
4226
}
@@ -205,63 +189,3 @@ test("'useSnackbar' hideSnackbar works as expected", async () => {
205189
expect(screen.queryByText(snackbarText)).not.toBeInTheDocument()
206190
);
207191
});
208-
209-
function TestComponent({
210-
errorBody = false,
211-
textBody = false,
212-
}: {
213-
errorBody?: boolean;
214-
textBody?: boolean;
215-
}) {
216-
useQuery({
217-
queryKey: ['somekey'],
218-
queryFn: async () => {
219-
return new Promise((_, reject) => {
220-
const options: ApiRequestOptions = {
221-
method: 'GET',
222-
url: '/some-random-url',
223-
};
224-
const result: ApiResult = {
225-
body: errorBody
226-
? textBody
227-
? 'text error'
228-
: { userMessage: 'Body error' }
229-
: {},
230-
ok: false,
231-
status: 500,
232-
statusText: '',
233-
url: '',
234-
};
235-
reject(new ApiError(options, result, 'API error'));
236-
});
237-
},
238-
retry: false,
239-
});
240-
241-
return <p>this is the page</p>;
242-
}
243-
244-
test('Shows error snackbar when API error happens without error body', async () => {
245-
render(<TestComponent />, { wrapper: TestProviders });
246-
await waitFor(() => screen.getByText('500: API error'), { timeout: 2000 });
247-
});
248-
249-
test('Shows error snackbar when API error happens with error body as object', async () => {
250-
render(<TestComponent errorBody />, { wrapper: TestProviders });
251-
await waitFor(() => screen.getByText('500: Body error'), { timeout: 2000 });
252-
});
253-
254-
test('Shows error snackbar when API error happens with error body as text', async () => {
255-
render(<TestComponent errorBody textBody />, { wrapper: TestProviders });
256-
await waitFor(() => screen.getByText('500: text error'), { timeout: 2000 });
257-
});
258-
259-
test("Doesn't show api error snackbar if its disabled", async () => {
260-
render(<TestComponent />, {
261-
wrapper: ({ children }) => (
262-
<TestProviders showAPIErrors={false}>{children}</TestProviders>
263-
),
264-
});
265-
266-
expect(screen.queryByText('500: API error')).not.toBeInTheDocument();
267-
});

src/providers/SnackbarProvider/SnackbarProvider.tsx

-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { close } from '@equinor/eds-icons';
1919

2020
import { StyledSnackbar } from './SnackbarProvider.styles';
2121
import { snackbarIcon } from './SnackbarProvider.utils';
22-
import { useApiErrorSnackbar } from 'src/providers/SnackbarProvider/hooks/useApiErrorSnackbar';
2322

2423
export interface ShowSnackbarSettings {
2524
customProps?: SnackbarProps;
@@ -58,7 +57,6 @@ export const useSnackbar = () => {
5857

5958
export type SnackbarProviderProps = {
6059
children: ReactNode;
61-
showAPIErrors?: boolean;
6260
} & SnackbarProps;
6361

6462
/**
@@ -67,7 +65,6 @@ export type SnackbarProviderProps = {
6765
*/
6866
export const SnackbarProvider: FC<SnackbarProviderProps> = ({
6967
children,
70-
showAPIErrors = true,
7168
...initialSnackbarProps
7269
}) => {
7370
const [open, setOpen] = useState(false);
@@ -96,8 +93,6 @@ export const SnackbarProvider: FC<SnackbarProviderProps> = ({
9693
[initialSnackbarProps]
9794
);
9895

99-
useApiErrorSnackbar({ showAPIErrors, showSnackbar });
100-
10196
const setActionDisabledState = (disabled: boolean) => {
10297
setSnackbarAction((currentState) =>
10398
currentState

src/providers/SnackbarProvider/hooks/useApiErrorSnackbar.ts

-69
This file was deleted.

0 commit comments

Comments
 (0)