-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtest-utils.tsx
68 lines (63 loc) · 1.7 KB
/
test-utils.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { ConfirmProvider } from '@/context/confirm-context'
import { DarkModeProvider, Toaster } from '@stacklok/ui-kit'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { RenderOptions, render } from '@testing-library/react'
import React, { ReactNode } from 'react'
import {
MemoryRouter,
MemoryRouterProps,
Route,
Routes,
} from 'react-router-dom'
import { UiKitClientSideRoutingProvider } from './ui-kit-client-side-routing'
type RoutConfig = {
routeConfig?: MemoryRouterProps
pathConfig?: string
}
export const TestQueryClientProvider = ({
children,
}: {
children: ReactNode
}) => {
return (
<QueryClientProvider
client={
new QueryClient({
defaultOptions: {
queries: {
refetchOnMount: true,
refetchOnReconnect: true,
refetchOnWindowFocus: true,
gcTime: 0,
staleTime: 0,
},
},
})
}
>
{children}
</QueryClientProvider>
)
}
const renderWithProviders = (
children: React.ReactNode,
options?: Omit<RenderOptions, 'queries'> & RoutConfig
) =>
render(
<TestQueryClientProvider>
<DarkModeProvider>
<ConfirmProvider>
<Toaster />
<MemoryRouter {...options?.routeConfig}>
<UiKitClientSideRoutingProvider>
<Routes>
<Route path={options?.pathConfig ?? '*'} element={children} />
</Routes>
</UiKitClientSideRoutingProvider>
</MemoryRouter>
</ConfirmProvider>
</DarkModeProvider>
</TestQueryClientProvider>
)
export * from '@testing-library/react'
export { renderWithProviders as render }