@@ -8,50 +8,35 @@ import { useFormState } from 'react-hook-form';
88import { AdminContext } from '../AdminContext' ;
99import { SimpleForm } from '../form' ;
1010import { DateInput } from './DateInput' ;
11+ import { Basic } from './DateInput.stories' ;
1112
1213describe ( '<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} ) ;
0 commit comments