-
Notifications
You must be signed in to change notification settings - Fork 394
/
TestProvider.tsx
40 lines (36 loc) · 1.3 KB
/
TestProvider.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
import React from 'react'
import {SanityClient} from '@sanity/client'
import {LayerProvider, studioTheme, ThemeProvider, ToastProvider} from '@sanity/ui'
import {createWorkspaceFromConfig, SingleWorkspace} from '../../src/config'
import {SourceProvider, WorkspaceProvider} from '../../src/studio'
import {ResourceCacheProvider} from '../../src/datastores/ResourceCacheProvider'
interface TestProviderOptions {
config: SingleWorkspace
client: SanityClient
}
export async function createTestProvider({client, config}: TestProviderOptions) {
const currentUser = {
id: 'doug',
name: 'Doug',
email: 'doug@sanity.io',
role: 'admin',
roles: [{name: 'admin', title: 'Admin'}],
}
const workspace = await createWorkspaceFromConfig({...config, currentUser, client})
function TestProvider({children}: {children: React.ReactNode}) {
return (
<ThemeProvider theme={studioTheme}>
<ToastProvider>
<LayerProvider>
<WorkspaceProvider workspace={workspace}>
<SourceProvider source={workspace.unstable_sources[0]}>
<ResourceCacheProvider>{children}</ResourceCacheProvider>
</SourceProvider>
</WorkspaceProvider>
</LayerProvider>
</ToastProvider>
</ThemeProvider>
)
}
return TestProvider
}