Skip to content

Commit 9c3d5d1

Browse files
author
React-Admin CI
committed
Clean up tests
1 parent 3efd89d commit 9c3d5d1

File tree

2 files changed

+93
-151
lines changed

2 files changed

+93
-151
lines changed

packages/ra-ui-materialui/src/input/DateInput.spec.tsx

Lines changed: 74 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -8,50 +8,35 @@ import { useFormState } from 'react-hook-form';
88
import { AdminContext } from '../AdminContext';
99
import { SimpleForm } from '../form';
1010
import { DateInput } from './DateInput';
11+
import { Basic } from './DateInput.stories';
1112

1213
describe('<DateInput />', () => {
1314
const defaultProps = {
1415
source: 'publishedAt',
1516
};
1617

1718
it('should render a date input', () => {
18-
render(
19-
<AdminContext dataProvider={testDataProvider()}>
20-
<ResourceContextProvider value="posts">
21-
<SimpleForm onSubmit={jest.fn()}>
22-
<DateInput {...defaultProps} />
23-
</SimpleForm>
24-
</ResourceContextProvider>
25-
</AdminContext>
26-
);
27-
const input = screen.getByLabelText(
28-
'resources.posts.fields.publishedAt'
29-
) as HTMLInputElement;
19+
render(<Basic />);
20+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
3021
expect(input.type).toBe('date');
3122
});
3223

3324
it('should accept a date string as value', async () => {
3425
let onSubmit = jest.fn();
3526
render(
36-
<AdminContext dataProvider={testDataProvider()}>
37-
<ResourceContextProvider value="posts">
38-
<SimpleForm
39-
onSubmit={onSubmit}
40-
defaultValues={{ publishedAt: '2021-09-11' }}
41-
>
42-
<DateInput {...defaultProps} />
43-
</SimpleForm>
44-
</ResourceContextProvider>
45-
</AdminContext>
27+
<Basic
28+
simpleFormProps={{
29+
onSubmit,
30+
defaultValues: { publishedAt: '2021-09-11' },
31+
}}
32+
/>
4633
);
47-
const input = screen.getByLabelText(
48-
'resources.posts.fields.publishedAt'
49-
) as HTMLInputElement;
34+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
5035
expect(input.value).toBe('2021-09-11');
5136
fireEvent.change(input, {
5237
target: { value: '2021-10-22' },
5338
});
54-
fireEvent.click(screen.getByLabelText('ra.action.save'));
39+
fireEvent.click(screen.getByLabelText('Save'));
5540
await waitFor(() => {
5641
expect(onSubmit).toHaveBeenCalledWith(
5742
{
@@ -65,27 +50,19 @@ describe('<DateInput />', () => {
6550
it('should accept a date time string as value', async () => {
6651
let onSubmit = jest.fn();
6752
render(
68-
<AdminContext dataProvider={testDataProvider()}>
69-
<ResourceContextProvider value="posts">
70-
<SimpleForm
71-
onSubmit={onSubmit}
72-
defaultValues={{
73-
publishedAt: '2021-09-11T06:51:17.772Z',
74-
}}
75-
>
76-
<DateInput {...defaultProps} />
77-
</SimpleForm>
78-
</ResourceContextProvider>
79-
</AdminContext>
53+
<Basic
54+
simpleFormProps={{
55+
onSubmit,
56+
defaultValues: { publishedAt: '2021-09-11T06:51:17.772Z' },
57+
}}
58+
/>
8059
);
81-
const input = screen.getByLabelText(
82-
'resources.posts.fields.publishedAt'
83-
) as HTMLInputElement;
60+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
8461
expect(input.value).toBe('2021-09-11');
8562
fireEvent.change(input, {
8663
target: { value: '2021-10-22' },
8764
});
88-
fireEvent.click(screen.getByLabelText('ra.action.save'));
65+
fireEvent.click(screen.getByLabelText('Save'));
8966
await waitFor(() => {
9067
expect(onSubmit).toHaveBeenCalledWith(
9168
{
@@ -99,25 +76,19 @@ describe('<DateInput />', () => {
9976
it('should accept a date object as value', async () => {
10077
let onSubmit = jest.fn();
10178
render(
102-
<AdminContext dataProvider={testDataProvider()}>
103-
<ResourceContextProvider value="posts">
104-
<SimpleForm
105-
onSubmit={onSubmit}
106-
defaultValues={{ publishedAt: '2021-09-11' }}
107-
>
108-
<DateInput {...defaultProps} />
109-
</SimpleForm>
110-
</ResourceContextProvider>
111-
</AdminContext>
79+
<Basic
80+
simpleFormProps={{
81+
onSubmit,
82+
defaultValues: { publishedAt: '2021-09-11' },
83+
}}
84+
/>
11285
);
113-
const input = screen.getByLabelText(
114-
'resources.posts.fields.publishedAt'
115-
) as HTMLInputElement;
86+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
11687
expect(input.value).toBe('2021-09-11');
11788
fireEvent.change(input, {
11889
target: { value: '2021-10-22' },
11990
});
120-
fireEvent.click(screen.getByLabelText('ra.action.save'));
91+
fireEvent.click(screen.getByLabelText('Save'));
12192
await waitFor(() => {
12293
expect(onSubmit).toHaveBeenCalledWith(
12394
{
@@ -139,27 +110,21 @@ describe('<DateInput />', () => {
139110
])('should accept a value with timezone %s', async publishedAt => {
140111
let onSubmit = jest.fn();
141112
render(
142-
<AdminContext dataProvider={testDataProvider()}>
143-
<ResourceContextProvider value="posts">
144-
<SimpleForm
145-
onSubmit={onSubmit}
146-
defaultValues={{
147-
publishedAt,
148-
}}
149-
>
150-
<DateInput {...defaultProps} />
151-
</SimpleForm>
152-
</ResourceContextProvider>
153-
</AdminContext>
113+
<Basic
114+
simpleFormProps={{
115+
onSubmit,
116+
defaultValues: { publishedAt },
117+
}}
118+
/>
154119
);
155120
const input = screen.getByLabelText(
156-
'resources.posts.fields.publishedAt'
121+
'Published at'
157122
) as HTMLInputElement;
158123
expect(input.value).toBe('2021-09-11');
159124
fireEvent.change(input, {
160125
target: { value: '2021-10-22' },
161126
});
162-
fireEvent.click(screen.getByLabelText('ra.action.save'));
127+
fireEvent.click(screen.getByLabelText('Save'));
163128
await waitFor(() => {
164129
expect(onSubmit).toHaveBeenCalledWith(
165130
{
@@ -174,30 +139,22 @@ describe('<DateInput />', () => {
174139
it('should accept a parse function', async () => {
175140
const onSubmit = jest.fn();
176141
render(
177-
<AdminContext dataProvider={testDataProvider()}>
178-
<ResourceContextProvider value="posts">
179-
<SimpleForm
180-
onSubmit={onSubmit}
181-
defaultValues={{
182-
publishedAt: new Date('2021-09-11'),
183-
}}
184-
>
185-
<DateInput
186-
{...defaultProps}
187-
parse={val => new Date(val)}
188-
/>
189-
</SimpleForm>
190-
</ResourceContextProvider>
191-
</AdminContext>
142+
<Basic
143+
simpleFormProps={{
144+
onSubmit,
145+
defaultValues: { publishedAt: new Date('2021-09-11') },
146+
}}
147+
dateInputProps={{
148+
parse: val => new Date(val),
149+
}}
150+
/>
192151
);
193-
const input = screen.getByLabelText(
194-
'resources.posts.fields.publishedAt'
195-
) as HTMLInputElement;
152+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
196153
expect(input.value).toBe('2021-09-11');
197154
fireEvent.change(input, {
198155
target: { value: '2021-10-22' },
199156
});
200-
fireEvent.click(screen.getByLabelText('ra.action.save'));
157+
fireEvent.click(screen.getByLabelText('Save'));
201158
await waitFor(() => {
202159
expect(onSubmit).toHaveBeenCalledWith(
203160
{
@@ -211,26 +168,23 @@ describe('<DateInput />', () => {
211168
it('should accept a parse function returning null', async () => {
212169
const onSubmit = jest.fn();
213170
render(
214-
<AdminContext dataProvider={testDataProvider()}>
215-
<ResourceContextProvider value="posts">
216-
<SimpleForm
217-
onSubmit={onSubmit}
218-
defaultValues={{ publishedAt: new Date('2021-09-11') }}
219-
>
220-
<DateInput {...defaultProps} parse={() => null} />
221-
</SimpleForm>
222-
</ResourceContextProvider>
223-
</AdminContext>
171+
<Basic
172+
simpleFormProps={{
173+
onSubmit,
174+
defaultValues: { publishedAt: new Date('2021-09-11') },
175+
}}
176+
dateInputProps={{
177+
parse: () => null,
178+
}}
179+
/>
224180
);
225-
const input = screen.getByLabelText(
226-
'resources.posts.fields.publishedAt'
227-
) as HTMLInputElement;
181+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
228182
expect(input.value).toBe('2021-09-11');
229183
fireEvent.change(input, {
230184
target: { value: '' },
231185
});
232186
fireEvent.blur(input);
233-
fireEvent.click(screen.getByLabelText('ra.action.save'));
187+
fireEvent.click(screen.getByLabelText('Save'));
234188
await waitFor(() => {
235189
expect(onSubmit).toHaveBeenCalledWith(
236190
{
@@ -271,26 +225,20 @@ describe('<DateInput />', () => {
271225
it('should return null when date is empty', async () => {
272226
const onSubmit = jest.fn();
273227
render(
274-
<AdminContext dataProvider={testDataProvider()}>
275-
<ResourceContextProvider value="posts">
276-
<SimpleForm
277-
onSubmit={onSubmit}
278-
defaultValues={{ publishedAt: new Date('2021-09-11') }}
279-
>
280-
<DateInput {...defaultProps} />
281-
</SimpleForm>
282-
</ResourceContextProvider>
283-
</AdminContext>
228+
<Basic
229+
simpleFormProps={{
230+
onSubmit,
231+
defaultValues: { publishedAt: new Date('2021-09-11') },
232+
}}
233+
/>
284234
);
285-
const input = screen.getByLabelText(
286-
'resources.posts.fields.publishedAt'
287-
) as HTMLInputElement;
235+
const input = screen.getByLabelText('Published at') as HTMLInputElement;
288236
expect(input.value).toBe('2021-09-11');
289237
fireEvent.change(input, {
290238
target: { value: '' },
291239
});
292240
fireEvent.blur(input);
293-
fireEvent.click(screen.getByLabelText('ra.action.save'));
241+
fireEvent.click(screen.getByLabelText('Save'));
294242
await waitFor(() => {
295243
expect(onSubmit).toHaveBeenCalledWith(
296244
{
@@ -303,39 +251,21 @@ describe('<DateInput />', () => {
303251

304252
describe('error message', () => {
305253
it('should not be displayed if field is pristine', () => {
306-
render(
307-
<AdminContext dataProvider={testDataProvider()}>
308-
<ResourceContextProvider value="posts">
309-
<SimpleForm onSubmit={jest.fn()}>
310-
<DateInput
311-
{...defaultProps}
312-
validate={required()}
313-
/>
314-
</SimpleForm>
315-
</ResourceContextProvider>
316-
</AdminContext>
317-
);
318-
expect(screen.queryByText('ra.validation.required')).toBeNull();
254+
render(<Basic dateInputProps={{ validate: required() }} />);
255+
expect(screen.queryByText('Required')).toBeNull();
319256
});
320257

321258
it('should be displayed if field has been touched and is invalid', async () => {
322259
render(
323-
<AdminContext dataProvider={testDataProvider()}>
324-
<ResourceContextProvider value="posts">
325-
<SimpleForm onSubmit={jest.fn()} mode="onBlur">
326-
<DateInput
327-
{...defaultProps}
328-
validate={required()}
329-
/>
330-
</SimpleForm>
331-
</ResourceContextProvider>
332-
</AdminContext>
333-
);
334-
const input = screen.getByLabelText(
335-
'resources.posts.fields.publishedAt *'
260+
<Basic
261+
simpleFormProps={{ mode: 'onBlur' }}
262+
dateInputProps={{ validate: required() }}
263+
/>
336264
);
265+
266+
const input = screen.getByLabelText('Published at *');
337267
fireEvent.blur(input);
338-
await screen.findByText('ra.validation.required');
268+
await screen.findByText('Required');
339269
});
340270
});
341271
});

packages/ra-ui-materialui/src/input/DateInput.stories.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,21 @@ import { minValue } from 'ra-core';
55

66
import { AdminContext } from '../AdminContext';
77
import { Create } from '../detail';
8-
import { SimpleForm } from '../form';
9-
import { DateInput } from './DateInput';
8+
import { SimpleForm, SimpleFormProps } from '../form';
9+
import { DateInput, DateInputProps } from './DateInput';
1010
import { FormInspector } from './common';
1111

1212
export default { title: 'ra-ui-materialui/input/DateInput' };
1313

14-
export const Basic = () => (
15-
<Wrapper>
16-
<DateInput source="published" />
14+
export const Basic = ({
15+
dateInputProps,
16+
simpleFormProps,
17+
}: {
18+
dateInputProps?: Partial<DateInputProps>;
19+
simpleFormProps?: Partial<SimpleFormProps>;
20+
}) => (
21+
<Wrapper simpleFormProps={simpleFormProps}>
22+
<DateInput source="publishedAt" {...dateInputProps} />
1723
</Wrapper>
1824
);
1925

@@ -45,10 +51,16 @@ export const Validate = () => (
4551

4652
const i18nProvider = polyglotI18nProvider(() => englishMessages);
4753

48-
const Wrapper = ({ children }) => (
54+
const Wrapper = ({
55+
children,
56+
simpleFormProps,
57+
}: {
58+
children: React.ReactNode;
59+
simpleFormProps?: Partial<SimpleFormProps>;
60+
}) => (
4961
<AdminContext i18nProvider={i18nProvider} defaultTheme="light">
5062
<Create resource="posts">
51-
<SimpleForm>
63+
<SimpleForm {...simpleFormProps}>
5264
{children}
5365
<FormInspector name="published" />
5466
</SimpleForm>

0 commit comments

Comments
 (0)