forked from zetkin/app.zetkin.org
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpreview.tsx
98 lines (88 loc) · 2.35 KB
/
preview.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import dayjs from 'dayjs';
import Environment from 'core/env/Environment';
import FetchApiClient from 'core/api/client/FetchApiClient';
import { EnvProvider } from 'core/env/EnvContext';
import { IntlProvider } from 'react-intl';
import isoWeek from 'dayjs/plugin/isoWeek';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { Provider as ReduxProvider } from 'react-redux';
import { ThemeProvider } from '@mui/material';
import { FC, PropsWithChildren } from 'react';
import { StoryFn } from '@storybook/react';
import theme from '../src/theme';
import '../src/styles.css';
import mockPerson from '../src/utils/testing/mocks/mockPerson';
import createStore from '../src/core/store';
dayjs.extend(isoWeek);
const I18nProvider: FC<PropsWithChildren> = (props) => {
return (
<IntlProvider defaultLocale="en" locale="en" messages={{}}>
<LocalizationProvider dateAdapter={AdapterDayjs}>
{props.children}
</LocalizationProvider>
</IntlProvider>
);
};
async function mockFetch(path: string, init: any) {
if (path === '/api/orgs/1/people/1' && init === undefined) {
return new Response(
JSON.stringify({
data: mockPerson(),
})
);
}
if (path === '/api/orgs/1/people/1/tags' && init === undefined) {
return new Response('[]');
}
if (path === '/api/orgs/1/people/fields' && init === undefined) {
return new Response(
JSON.stringify({
data: [],
})
);
}
throw new Error(
`unmocked request to path: '${path}'
with init: ${JSON.stringify(init)}`
);
}
class MockApiClient extends FetchApiClient {
constructor() {
super(mockFetch);
}
}
export const decorators = [
(Story: StoryFn) => (
<ThemeProvider theme={theme}>
<Story />
</ThemeProvider>
),
(Story: StoryFn) => {
const store = createStore();
const env = new Environment(new MockApiClient());
return (
<ReduxProvider store={store}>
<EnvProvider env={env}>
<Story />
</EnvProvider>
</ReduxProvider>
);
},
(Story: StoryFn) => (
<I18nProvider>
<Story />
</I18nProvider>
),
];
export const parameters = {
nextjs: {
router: {
query: {
orgId: 1,
personId: 1,
},
},
},
};
export const tags = ['autodocs'];