@atlaskit/datetime-picker 13.11.3 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1225 @@
1
+ jest.autoMockOff();
2
+
3
+ import transformer, {
4
+ datePickerImportName,
5
+ dtpPropsToMoveIntoPickerProps,
6
+ selectPropsToMoveIntoProps,
7
+ timePickerImportName,
8
+ } from '../14.0.0-remove-duplicate-and-unused-props';
9
+
10
+ const defineInlineTest = require('jscodeshift/dist/testUtils').defineInlineTest;
11
+
12
+ defineInlineTest(
13
+ { default: transformer, parser: 'tsx' },
14
+ {},
15
+ `import React from 'react';`,
16
+ `import React from 'react';`,
17
+ 'should not transform if imports are not present',
18
+ );
19
+
20
+ defineInlineTest(
21
+ { default: transformer, parser: 'tsx' },
22
+ {},
23
+ `
24
+ import React from 'react';
25
+ import { Code } from '@atlaskit/code';
26
+
27
+ const Component1 = () => <Code prop="abc" />;
28
+
29
+ const Component2 = () => <><Code prop="abc">text</Code></>;
30
+
31
+ class Component3 extends React.Component { render() { return <div><Code prop="abc" /></div>; } }
32
+
33
+ const element = <Code prop="abc" />;
34
+ `,
35
+ `
36
+ import React from 'react';
37
+ import { Code } from '@atlaskit/code';
38
+
39
+ const Component1 = () => <Code prop="abc" />;
40
+
41
+ const Component2 = () => <><Code prop="abc">text</Code></>;
42
+
43
+ class Component3 extends React.Component { render() { return <div><Code prop="abc" /></div>; } }
44
+
45
+ const element = <Code prop="abc" />;
46
+ `,
47
+ 'should not transform if removable props are not preset',
48
+ );
49
+
50
+ describe('Migrate *selectProps to *pickerProps in DateTimePicker', () => {
51
+ defineInlineTest(
52
+ { default: transformer, parser: 'tsx' },
53
+ {},
54
+ `
55
+ import React from 'react';
56
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
57
+
58
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test' }} />;
59
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ test: 'test' }} />;
60
+
61
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test' }} /></>;
62
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ test: 'test' }} /></>;
63
+
64
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test' }} /></div>; } }
65
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerProps={{ test: 'test' }} /></div>; } }
66
+
67
+ const dateElement = <DateTimePicker datePickerProps={{ test: 'test' }} />;
68
+ const timeElement = <DateTimePicker timePickerProps={{ test: 'test' }} />;
69
+ `,
70
+ `
71
+ import React from 'react';
72
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
73
+
74
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test' }} />;
75
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ test: 'test' }} />;
76
+
77
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test' }} /></>;
78
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ test: 'test' }} /></>;
79
+
80
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test' }} /></div>; } }
81
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerProps={{ test: 'test' }} /></div>; } }
82
+
83
+ const dateElement = <DateTimePicker datePickerProps={{ test: 'test' }} />;
84
+ const timeElement = <DateTimePicker timePickerProps={{ test: 'test' }} />;
85
+ `,
86
+ 'should not touch them if no `*PickerSelectProps` exist',
87
+ );
88
+
89
+ defineInlineTest(
90
+ { default: transformer, parser: 'tsx' },
91
+ {},
92
+ `
93
+ import React from 'react';
94
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
95
+
96
+ const DateComponent1 = () => <DateTimePicker datePickerSelectProps={{ test: 'test' }} />;
97
+ const TimeComponent1 = () => <DateTimePicker timePickerSelectProps={{ test: 'test' }} />;
98
+
99
+ const DateComponent2 = () => <><DateTimePicker datePickerSelectProps={{ test: 'test' }} /></>;
100
+ const TimeComponent2 = () => <><DateTimePicker timePickerSelectProps={{ test: 'test' }} /></>;
101
+
102
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerSelectProps={{ test: 'test' }} /></div>; } }
103
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerSelectProps={{ test: 'test' }} /></div>; } }
104
+
105
+ const dateElement = <DateTimePicker datePickerSelectProps={{ test: 'test' }} />;
106
+ const timeElement = <DateTimePicker timePickerSelectProps={{ test: 'test' }} />;
107
+ `,
108
+ `
109
+ import React from 'react';
110
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
111
+
112
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{
113
+ selectProps: { test: 'test' }
114
+ }} />;
115
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{
116
+ selectProps: { test: 'test' }
117
+ }} />;
118
+
119
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{
120
+ selectProps: { test: 'test' }
121
+ }} /></>;
122
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{
123
+ selectProps: { test: 'test' }
124
+ }} /></>;
125
+
126
+ class DateComponent3 extends React.Component { render() { return (
127
+ <div><DateTimePicker datePickerProps={{
128
+ selectProps: { test: 'test' }
129
+ }} /></div>
130
+ ); } }
131
+ class TimeComponent3 extends React.Component { render() { return (
132
+ <div><DateTimePicker timePickerProps={{
133
+ selectProps: { test: 'test' }
134
+ }} /></div>
135
+ ); } }
136
+
137
+ const dateElement = <DateTimePicker datePickerProps={{
138
+ selectProps: { test: 'test' }
139
+ }} />;
140
+ const timeElement = <DateTimePicker timePickerProps={{
141
+ selectProps: { test: 'test' }
142
+ }} />;
143
+ `,
144
+ 'should move `*PickerSelectProps` to `*PickerProps.selectProps`',
145
+ );
146
+
147
+ defineInlineTest(
148
+ { default: transformer, parser: 'tsx' },
149
+ {},
150
+ `
151
+ import React from 'react';
152
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
153
+
154
+ const DateComponent1 = () => <DateTimePicker datePickerSelectProps={{ test: 'test' }} id="id" />;
155
+ const TimeComponent1 = () => <DateTimePicker timePickerSelectProps={{ test: 'test' }} id="id" />;
156
+
157
+ const DateComponent2 = () => <><DateTimePicker datePickerSelectProps={{ test: 'test' }} id="id" /></>;
158
+ const TimeComponent2 = () => <><DateTimePicker timePickerSelectProps={{ test: 'test' }} id="id" /></>;
159
+
160
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerSelectProps={{ test: 'test' }} id="id" /></div>; } }
161
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerSelectProps={{ test: 'test' }} id="id" /></div>; } }
162
+
163
+ const dateElement = <DateTimePicker datePickerSelectProps={{ test: 'test' }} id="id" />;
164
+ const timeElement = <DateTimePicker timePickerSelectProps={{ test: 'test' }} id="id" />;
165
+ `,
166
+ `
167
+ import React from 'react';
168
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
169
+
170
+ const DateComponent1 = () => <DateTimePicker id="id" datePickerProps={{
171
+ selectProps: { test: 'test' }
172
+ }} />;
173
+ const TimeComponent1 = () => <DateTimePicker id="id" timePickerProps={{
174
+ selectProps: { test: 'test' }
175
+ }} />;
176
+
177
+ const DateComponent2 = () => <><DateTimePicker id="id" datePickerProps={{
178
+ selectProps: { test: 'test' }
179
+ }} /></>;
180
+ const TimeComponent2 = () => <><DateTimePicker id="id" timePickerProps={{
181
+ selectProps: { test: 'test' }
182
+ }} /></>;
183
+
184
+ class DateComponent3 extends React.Component { render() { return (
185
+ <div><DateTimePicker id="id" datePickerProps={{
186
+ selectProps: { test: 'test' }
187
+ }} /></div>
188
+ ); } }
189
+ class TimeComponent3 extends React.Component { render() { return (
190
+ <div><DateTimePicker id="id" timePickerProps={{
191
+ selectProps: { test: 'test' }
192
+ }} /></div>
193
+ ); } }
194
+
195
+ const dateElement = <DateTimePicker id="id" datePickerProps={{
196
+ selectProps: { test: 'test' }
197
+ }} />;
198
+ const timeElement = <DateTimePicker id="id" timePickerProps={{
199
+ selectProps: { test: 'test' }
200
+ }} />;
201
+ `,
202
+ 'should move `*PickerSelectProps` to `*PickerProps.selectProps` and not touch unrelated props',
203
+ );
204
+
205
+ defineInlineTest(
206
+ { default: transformer, parser: 'tsx' },
207
+ {},
208
+ `
209
+ import React from 'react';
210
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
211
+
212
+ const DateComponent1 = () => <DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} />;
213
+ const TimeComponent1 = () => <DateTimePicker timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} />;
214
+
215
+ const DateComponent2 = () => <><DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} /></>;
216
+ const TimeComponent2 = () => <><DateTimePicker timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} /></>;
217
+
218
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} /></div>; } }
219
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} /></div>; } }
220
+
221
+ const dateElement = <DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} />;
222
+ const timeElement = <DateTimePicker timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} />;
223
+ `,
224
+ `
225
+ import React from 'react';
226
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
227
+
228
+ const DateComponent1 = () => <DateTimePicker
229
+ datePickerProps={{
230
+ id: 'id',
231
+
232
+ selectProps: {
233
+ test: 'test'
234
+ }
235
+ }} />;
236
+ const TimeComponent1 = () => <DateTimePicker
237
+ timePickerProps={{
238
+ id: 'id',
239
+
240
+ selectProps: {
241
+ test: 'test'
242
+ }
243
+ }} />;
244
+
245
+ const DateComponent2 = () => <><DateTimePicker
246
+ datePickerProps={{
247
+ id: 'id',
248
+
249
+ selectProps: {
250
+ test: 'test'
251
+ }
252
+ }} /></>;
253
+ const TimeComponent2 = () => <><DateTimePicker
254
+ timePickerProps={{
255
+ id: 'id',
256
+
257
+ selectProps: {
258
+ test: 'test'
259
+ }
260
+ }} /></>;
261
+
262
+ class DateComponent3 extends React.Component { render() { return (
263
+ <div><DateTimePicker
264
+ datePickerProps={{
265
+ id: 'id',
266
+
267
+ selectProps: {
268
+ test: 'test'
269
+ }
270
+ }} /></div>
271
+ ); } }
272
+ class TimeComponent3 extends React.Component { render() { return (
273
+ <div><DateTimePicker
274
+ timePickerProps={{
275
+ id: 'id',
276
+
277
+ selectProps: {
278
+ test: 'test'
279
+ }
280
+ }} /></div>
281
+ ); } }
282
+
283
+ const dateElement = <DateTimePicker
284
+ datePickerProps={{
285
+ id: 'id',
286
+
287
+ selectProps: {
288
+ test: 'test'
289
+ }
290
+ }} />;
291
+ const timeElement = <DateTimePicker
292
+ timePickerProps={{
293
+ id: 'id',
294
+
295
+ selectProps: {
296
+ test: 'test'
297
+ }
298
+ }} />;
299
+ `,
300
+ 'should combine `*PickerSelectProps` to `*PickerProps.selectProps`',
301
+ );
302
+
303
+ defineInlineTest(
304
+ { default: transformer, parser: 'tsx' },
305
+ {},
306
+ `
307
+ import React from 'react';
308
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
309
+
310
+ const Component1 = () => <DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} />;
311
+
312
+ const Component2 = () => <><DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} /></>;
313
+
314
+ class Component3 extends React.Component { render() { return <div><DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} /></div>; } }
315
+
316
+ const element = <DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} />;
317
+ `,
318
+ `
319
+ import React from 'react';
320
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
321
+
322
+ const Component1 = () => <DateTimePicker
323
+ datePickerProps={{
324
+ id: 'id',
325
+
326
+ selectProps: {
327
+ test: 'test'
328
+ }
329
+ }}
330
+ timePickerProps={{
331
+ id: 'id',
332
+
333
+ selectProps: {
334
+ test: 'test'
335
+ }
336
+ }} />;
337
+
338
+ const Component2 = () => <><DateTimePicker
339
+ datePickerProps={{
340
+ id: 'id',
341
+
342
+ selectProps: {
343
+ test: 'test'
344
+ }
345
+ }}
346
+ timePickerProps={{
347
+ id: 'id',
348
+
349
+ selectProps: {
350
+ test: 'test'
351
+ }
352
+ }} /></>;
353
+
354
+ class Component3 extends React.Component { render() { return (
355
+ <div><DateTimePicker
356
+ datePickerProps={{
357
+ id: 'id',
358
+
359
+ selectProps: {
360
+ test: 'test'
361
+ }
362
+ }}
363
+ timePickerProps={{
364
+ id: 'id',
365
+
366
+ selectProps: {
367
+ test: 'test'
368
+ }
369
+ }} /></div>
370
+ ); } }
371
+
372
+ const element = <DateTimePicker
373
+ datePickerProps={{
374
+ id: 'id',
375
+
376
+ selectProps: {
377
+ test: 'test'
378
+ }
379
+ }}
380
+ timePickerProps={{
381
+ id: 'id',
382
+
383
+ selectProps: {
384
+ test: 'test'
385
+ }
386
+ }} />;
387
+ `,
388
+ 'should combine `*PickerSelectProps` to `*PickerProps.selectProps` if both are present',
389
+ );
390
+
391
+ defineInlineTest(
392
+ { default: transformer, parser: 'tsx' },
393
+ {},
394
+ `
395
+ import React from 'react';
396
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
397
+
398
+ const Component1 = () => <DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} id="id" />;
399
+
400
+ const Component2 = () => <><DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} id="id" /></>;
401
+
402
+ class Component3 extends React.Component { render() { return <div><DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} id="id" /></div>; } }
403
+
404
+ const element = <DateTimePicker datePickerSelectProps={{ test: 'test' }} datePickerProps={{ id: 'id' }} timePickerSelectProps={{ test: 'test' }} timePickerProps={{ id: 'id' }} id="id" />;
405
+ `,
406
+ `
407
+ import React from 'react';
408
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
409
+
410
+ const Component1 = () => <DateTimePicker
411
+ datePickerProps={{
412
+ id: 'id',
413
+
414
+ selectProps: {
415
+ test: 'test'
416
+ }
417
+ }}
418
+ timePickerProps={{
419
+ id: 'id',
420
+
421
+ selectProps: {
422
+ test: 'test'
423
+ }
424
+ }}
425
+ id="id" />;
426
+
427
+ const Component2 = () => <><DateTimePicker
428
+ datePickerProps={{
429
+ id: 'id',
430
+
431
+ selectProps: {
432
+ test: 'test'
433
+ }
434
+ }}
435
+ timePickerProps={{
436
+ id: 'id',
437
+
438
+ selectProps: {
439
+ test: 'test'
440
+ }
441
+ }}
442
+ id="id" /></>;
443
+
444
+ class Component3 extends React.Component { render() { return (
445
+ <div><DateTimePicker
446
+ datePickerProps={{
447
+ id: 'id',
448
+
449
+ selectProps: {
450
+ test: 'test'
451
+ }
452
+ }}
453
+ timePickerProps={{
454
+ id: 'id',
455
+
456
+ selectProps: {
457
+ test: 'test'
458
+ }
459
+ }}
460
+ id="id" /></div>
461
+ ); } }
462
+
463
+ const element = <DateTimePicker
464
+ datePickerProps={{
465
+ id: 'id',
466
+
467
+ selectProps: {
468
+ test: 'test'
469
+ }
470
+ }}
471
+ timePickerProps={{
472
+ id: 'id',
473
+
474
+ selectProps: {
475
+ test: 'test'
476
+ }
477
+ }}
478
+ id="id" />;
479
+ `,
480
+ 'should combine `*PickerSelectProps` to `*PickerProps.selectProps` if both are present and not touch unrelated props',
481
+ );
482
+ });
483
+
484
+ describe('Migrate top-level props into *pickerProps in DateTimePicker', () => {
485
+ dtpPropsToMoveIntoPickerProps.forEach((formula) => {
486
+ const { oldPropName, destination } = formula;
487
+ describe(oldPropName, () => {
488
+ defineInlineTest(
489
+ { default: transformer, parser: 'tsx' },
490
+ {},
491
+ `
492
+ import React from 'react';
493
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
494
+
495
+ const DateComponent1 = () => <DateTimePicker dummyProp={{ test: 'test' }} />;
496
+ const TimeComponent1 = () => <DateTimePicker dummyProp={{ test: 'test' }} />;
497
+
498
+ const DateComponent2 = () => <><DateTimePicker dummyProp={{ test: 'test' }} /></>;
499
+ const TimeComponent2 = () => <><DateTimePicker dummyProp={{ test: 'test' }} /></>;
500
+
501
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker dummyProp={{ test: 'test' }} /></div>; } }
502
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker dummyProp={{ test: 'test' }} /></div>; } }
503
+
504
+ const dateElement = <DateTimePicker dummyProp={{ test: 'test' }} />;
505
+ const timeElement = <DateTimePicker dummyProp={{ test: 'test' }} />;
506
+ `,
507
+ `
508
+ import React from 'react';
509
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
510
+
511
+ const DateComponent1 = () => <DateTimePicker dummyProp={{ test: 'test' }} />;
512
+ const TimeComponent1 = () => <DateTimePicker dummyProp={{ test: 'test' }} />;
513
+
514
+ const DateComponent2 = () => <><DateTimePicker dummyProp={{ test: 'test' }} /></>;
515
+ const TimeComponent2 = () => <><DateTimePicker dummyProp={{ test: 'test' }} /></>;
516
+
517
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker dummyProp={{ test: 'test' }} /></div>; } }
518
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker dummyProp={{ test: 'test' }} /></div>; } }
519
+
520
+ const dateElement = <DateTimePicker dummyProp={{ test: 'test' }} />;
521
+ const timeElement = <DateTimePicker dummyProp={{ test: 'test' }} />;
522
+ `,
523
+ `should not touch them if \`${oldPropName}\` does not exist`,
524
+ );
525
+
526
+ defineInlineTest(
527
+ { default: transformer, parser: 'tsx' },
528
+ {},
529
+ `
530
+ import React from 'react';
531
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
532
+
533
+ const Component1 = () => <DateTimePicker ${oldPropName}="value" />;
534
+
535
+ const Component2 = () => <><DateTimePicker ${oldPropName}="value" /></>;
536
+
537
+ class Component3 extends React.Component { render() { return <div><DateTimePicker ${oldPropName}="value" /></div>; } }
538
+
539
+ const element = <DateTimePicker ${oldPropName}="value" />;
540
+ `,
541
+ `
542
+ import React from 'react';
543
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
544
+
545
+ const Component1 = () => <DateTimePicker ${destination[0]}={{
546
+ ${destination[1]}: "value"
547
+ }} />;
548
+
549
+ const Component2 = () => <><DateTimePicker ${destination[0]}={{
550
+ ${destination[1]}: "value"
551
+ }} /></>;
552
+
553
+ class Component3 extends React.Component { render() { return (
554
+ <div><DateTimePicker ${destination[0]}={{
555
+ ${destination[1]}: "value"
556
+ }} /></div>
557
+ ); } }
558
+
559
+ const element = <DateTimePicker ${destination[0]}={{
560
+ ${destination[1]}: "value"
561
+ }} />;
562
+ `,
563
+ `should migrate \`${oldPropName}\` into \`${destination[0]}.${destination[1]} if \`${destination[0]}\` does not exist`,
564
+ );
565
+
566
+ defineInlineTest(
567
+ { default: transformer, parser: 'tsx' },
568
+ {},
569
+ `
570
+ import React from 'react';
571
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
572
+
573
+ const Component1 = () => <DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} />;
574
+
575
+ const Component2 = () => <><DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} /></>;
576
+
577
+ class Component3 extends React.Component { render() { return <div><DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} /></div>; } }
578
+
579
+ const element = <DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} />;
580
+ `,
581
+ `
582
+ import React from 'react';
583
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
584
+
585
+ const Component1 = () => <DateTimePicker
586
+ ${destination[0]}={{
587
+ id: "id",
588
+ ${destination[1]}: "value"
589
+ }} />;
590
+
591
+ const Component2 = () => <><DateTimePicker
592
+ ${destination[0]}={{
593
+ id: "id",
594
+ ${destination[1]}: "value"
595
+ }} /></>;
596
+
597
+ class Component3 extends React.Component { render() { return (
598
+ <div><DateTimePicker
599
+ ${destination[0]}={{
600
+ id: "id",
601
+ ${destination[1]}: "value"
602
+ }} /></div>
603
+ ); } }
604
+
605
+ const element = <DateTimePicker
606
+ ${destination[0]}={{
607
+ id: "id",
608
+ ${destination[1]}: "value"
609
+ }} />;
610
+ `,
611
+ `should migrate \`${oldPropName}\` into \`${destination[0]}.${destination[1]} if \`${destination[0]}\` does exist`,
612
+ );
613
+
614
+ defineInlineTest(
615
+ { default: transformer, parser: 'tsx' },
616
+ {},
617
+ `
618
+ import React from 'react';
619
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
620
+
621
+ const Component1 = () => <DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} id="id" />;
622
+
623
+ const Component2 = () => <><DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} id="id" /></>;
624
+
625
+ class Component3 extends React.Component { render() { return <div><DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} id="id" /></div>; } }
626
+
627
+ const element = <DateTimePicker ${oldPropName}="value" ${destination[0]}={{ id: "id" }} id="id" />;
628
+ `,
629
+ `
630
+ import React from 'react';
631
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
632
+
633
+ const Component1 = () => <DateTimePicker
634
+ ${destination[0]}={{
635
+ id: "id",
636
+ ${destination[1]}: "value"
637
+ }}
638
+ id="id" />;
639
+
640
+ const Component2 = () => <><DateTimePicker
641
+ ${destination[0]}={{
642
+ id: "id",
643
+ ${destination[1]}: "value"
644
+ }}
645
+ id="id" /></>;
646
+
647
+ class Component3 extends React.Component { render() { return (
648
+ <div><DateTimePicker
649
+ ${destination[0]}={{
650
+ id: "id",
651
+ ${destination[1]}: "value"
652
+ }}
653
+ id="id" /></div>
654
+ ); } }
655
+
656
+ const element = <DateTimePicker
657
+ ${destination[0]}={{
658
+ id: "id",
659
+ ${destination[1]}: "value"
660
+ }}
661
+ id="id" />;
662
+ `,
663
+ `should migrate \`${oldPropName}\` into \`${destination[0]}.${destination[1]} if \`${destination[0]}\` does exist and not touch unrelated props`,
664
+ );
665
+ });
666
+ });
667
+ });
668
+
669
+ describe('Migrate relevant selectProps into top-level props on DatePicker/TimePicker', () => {
670
+ [datePickerImportName, timePickerImportName].forEach((Picker) => {
671
+ describe(Picker, () => {
672
+ selectPropsToMoveIntoProps.forEach((formula) => {
673
+ const { source, newPropName } = formula;
674
+ const [selectProps, propertyName] = source;
675
+ const propertyNameInObj = propertyName.includes('-') ? `"${propertyName}"` : propertyName;
676
+
677
+ describe(newPropName, () => {
678
+ defineInlineTest(
679
+ { default: transformer, parser: 'tsx' },
680
+ {},
681
+ `
682
+ import React from 'react';
683
+ import { ${Picker} } from '@atlaskit/datetime-picker';
684
+
685
+ const DateComponent1 = () => <${Picker} dummyProp={{ test: 'test' }} />;
686
+ const TimeComponent1 = () => <${Picker} dummyProp={{ test: 'test' }} />;
687
+
688
+ const DateComponent2 = () => <><${Picker} dummyProp={{ test: 'test' }} /></>;
689
+ const TimeComponent2 = () => <><${Picker} dummyProp={{ test: 'test' }} /></>;
690
+
691
+ class DateComponent3 extends React.Component { render() { return <div><${Picker} dummyProp={{ test: 'test' }} /></div>; } }
692
+ class TimeComponent3 extends React.Component { render() { return <div><${Picker} dummyProp={{ test: 'test' }} /></div>; } }
693
+
694
+ const dateElement = <${Picker} dummyProp={{ test: 'test' }} />;
695
+ const timeElement = <${Picker} dummyProp={{ test: 'test' }} />;
696
+ `,
697
+ `
698
+ import React from 'react';
699
+ import { ${Picker} } from '@atlaskit/datetime-picker';
700
+
701
+ const DateComponent1 = () => <${Picker} dummyProp={{ test: 'test' }} />;
702
+ const TimeComponent1 = () => <${Picker} dummyProp={{ test: 'test' }} />;
703
+
704
+ const DateComponent2 = () => <><${Picker} dummyProp={{ test: 'test' }} /></>;
705
+ const TimeComponent2 = () => <><${Picker} dummyProp={{ test: 'test' }} /></>;
706
+
707
+ class DateComponent3 extends React.Component { render() { return <div><${Picker} dummyProp={{ test: 'test' }} /></div>; } }
708
+ class TimeComponent3 extends React.Component { render() { return <div><${Picker} dummyProp={{ test: 'test' }} /></div>; } }
709
+
710
+ const dateElement = <${Picker} dummyProp={{ test: 'test' }} />;
711
+ const timeElement = <${Picker} dummyProp={{ test: 'test' }} />;
712
+ `,
713
+ `should not touch them if \`${newPropName}\` does not exist`,
714
+ );
715
+
716
+ defineInlineTest(
717
+ { default: transformer, parser: 'tsx' },
718
+ {},
719
+ `
720
+ import React from 'react';
721
+ import { ${Picker} } from '@atlaskit/datetime-picker';
722
+
723
+ const Component1 = () => <${Picker} ${selectProps}={{ ${propertyNameInObj}: "value" }} />;
724
+
725
+ const Component2 = () => <><${Picker} ${selectProps}={{ ${propertyNameInObj}: "value" }} /></>;
726
+
727
+ class Component3 extends React.Component { render() { return <div><${Picker} ${selectProps}={{ ${propertyNameInObj}: "value" }} /></div>; } }
728
+
729
+ const element = <${Picker} ${selectProps}={{ ${propertyNameInObj}: "value" }} />;
730
+ `,
731
+ `
732
+ import React from 'react';
733
+ import { ${Picker} } from '@atlaskit/datetime-picker';
734
+
735
+ const Component1 = () => <${Picker} ${newPropName}='value' />;
736
+
737
+ const Component2 = () => <><${Picker} ${newPropName}='value' /></>;
738
+
739
+ class Component3 extends React.Component { render() { return <div><${Picker} ${newPropName}='value' /></div>; } }
740
+
741
+ const element = <${Picker} ${newPropName}='value' />;
742
+ `,
743
+ `should migrate \`${selectProps}.${propertyName}\` to \`${newPropName}\` if \`${newPropName}\` does not exist`,
744
+ );
745
+
746
+ defineInlineTest(
747
+ { default: transformer, parser: 'tsx' },
748
+ {},
749
+ `
750
+ import React from 'react';
751
+ import { ${Picker} } from '@atlaskit/datetime-picker';
752
+
753
+ const Component1 = () => <${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} />;
754
+
755
+ const Component2 = () => <><${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} /></>;
756
+
757
+ class Component3 extends React.Component { render() { return <div><${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} /></div>; } }
758
+
759
+ const element = <${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} />;
760
+ `,
761
+ `
762
+ import React from 'react';
763
+ import { ${Picker} } from '@atlaskit/datetime-picker';
764
+
765
+ const Component1 = () => <${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} />;
766
+
767
+ const Component2 = () => <><${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} /></>;
768
+
769
+ class Component3 extends React.Component { render() { return <div><${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} /></div>; } }
770
+
771
+ const element = <${Picker} ${newPropName}="value" ${selectProps}={{ ${propertyNameInObj}: "id", test: "test" }} />;
772
+ `,
773
+ `should leave \`${selectProps}.${propertyName}\` if \`${newPropName}\` exists`,
774
+ );
775
+ });
776
+ });
777
+ });
778
+ });
779
+ });
780
+
781
+ describe('Migrate relevant selectProps into *PickerProps on DateTimePicker', () => {
782
+ selectPropsToMoveIntoProps.forEach((formula) => {
783
+ const { source, newPropName } = formula;
784
+ const [selectProps, propertyName] = source;
785
+ const oldPropertyNameInObj = propertyName.includes('-') ? `"${propertyName}"` : propertyName;
786
+ const newPropertyNameInObj = `"${newPropName}"`;
787
+
788
+ describe(newPropertyNameInObj, () => {
789
+ defineInlineTest(
790
+ { default: transformer, parser: 'tsx' },
791
+ {},
792
+ `
793
+ import React from 'react';
794
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
795
+
796
+ const DateComponent1 = () => <DateTimePicker dummyProp={{ test: 'test' }} />;
797
+
798
+ const DateComponent2 = () => <><DateTimePicker dummyProp={{ test: 'test' }} /></>;
799
+
800
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker dummyProp={{ test: 'test' }} /></div>; } }
801
+
802
+ const dateElement = <DateTimePicker dummyProp={{ test: 'test' }} />;
803
+ `,
804
+ `
805
+ import React from 'react';
806
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
807
+
808
+ const DateComponent1 = () => <DateTimePicker dummyProp={{ test: 'test' }} />;
809
+
810
+ const DateComponent2 = () => <><DateTimePicker dummyProp={{ test: 'test' }} /></>;
811
+
812
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker dummyProp={{ test: 'test' }} /></div>; } }
813
+
814
+ const dateElement = <DateTimePicker dummyProp={{ test: 'test' }} />;
815
+ `,
816
+ `should not touch them if *PickerProps does not exist`,
817
+ );
818
+
819
+ defineInlineTest(
820
+ { default: transformer, parser: 'tsx' },
821
+ {},
822
+ `
823
+ import React from 'react';
824
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
825
+
826
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test' }} />;
827
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ test: 'test' }} />;
828
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} />;
829
+
830
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test' }} /></>;
831
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ test: 'test' }} /></>;
832
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} /></>;
833
+
834
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test' }} /></div>; } }
835
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerProps={{ test: 'test' }} /></div>; } }
836
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} /></div>; } }
837
+
838
+ const dateElement = <DateTimePicker datePickerProps={{ test: 'test' }} />;
839
+ const timeElement = <DateTimePicker timePickerProps={{ test: 'test' }} />;
840
+ const bothElement = <DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} />;
841
+ `,
842
+ `
843
+ import React from 'react';
844
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
845
+
846
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test' }} />;
847
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ test: 'test' }} />;
848
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} />;
849
+
850
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test' }} /></>;
851
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ test: 'test' }} /></>;
852
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} /></>;
853
+
854
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test' }} /></div>; } }
855
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerProps={{ test: 'test' }} /></div>; } }
856
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} /></div>; } }
857
+
858
+ const dateElement = <DateTimePicker datePickerProps={{ test: 'test' }} />;
859
+ const timeElement = <DateTimePicker timePickerProps={{ test: 'test' }} />;
860
+ const bothElement = <DateTimePicker datePickerProps={{ test: 'test' }} timePickerProps={{ test: 'test' }} />;
861
+ `,
862
+ `should not touch them if \`*PickerProps.selectProps\` does not exist`,
863
+ );
864
+
865
+ defineInlineTest(
866
+ { default: transformer, parser: 'tsx' },
867
+ {},
868
+ `
869
+ import React from 'react';
870
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
871
+
872
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
873
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
874
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
875
+
876
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></>;
877
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></>;
878
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test' }} /></>;
879
+
880
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></div>; } }
881
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></div>; } }
882
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></div>; } }
883
+
884
+ const dateElement = <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
885
+ const timeElement = <DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
886
+ const bothElement = <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
887
+ `,
888
+ `
889
+ import React from 'react';
890
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
891
+
892
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
893
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
894
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
895
+
896
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></>;
897
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></>;
898
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test' }} /></>;
899
+
900
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></div>; } }
901
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></div>; } }
902
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} /></div>; } }
903
+
904
+ const dateElement = <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
905
+ const timeElement = <DateTimePicker timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
906
+ const bothElement = <DateTimePicker datePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} timePickerProps={{ test: 'test', selectProps: { dummyProperty: 'yes' } }} />;
907
+ `,
908
+ `should not touch them if \`*PickerProps.selectProps.${oldPropertyNameInObj}}\` does not exist`,
909
+ );
910
+
911
+ defineInlineTest(
912
+ { default: transformer, parser: 'tsx' },
913
+ {},
914
+ `
915
+ import React from 'react';
916
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
917
+
918
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
919
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
920
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
921
+
922
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} /></>;
923
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} /></>;
924
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} /></>;
925
+
926
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} /></div>; } }
927
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} /></div>; } }
928
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} /></div>; } }
929
+
930
+ const dateElement = <DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
931
+ const timeElement = <DateTimePicker timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
932
+ const bothElement = <DateTimePicker datePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
933
+ `,
934
+ `
935
+ import React from 'react';
936
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
937
+
938
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} />;
939
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value" }} />;
940
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} timePickerProps={{ ${newPropertyNameInObj}: "value" }} />;
941
+
942
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} /></>;
943
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value" }} /></>;
944
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} timePickerProps={{ ${newPropertyNameInObj}: "value" }} /></>;
945
+
946
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} /></div>; } }
947
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} /></div>; } }
948
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} timePickerProps={{ ${newPropertyNameInObj}: "value" }} /></div>; } }
949
+
950
+ const dateElement = <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} />;
951
+ const timeElement = <DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value" }} />;
952
+ const bothElement = <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value" }} timePickerProps={{ ${newPropertyNameInObj}: "value" }} />;
953
+ `,
954
+ `should migrate \`*PickerProps.${selectProps}.${propertyName}\` to \`*PickerProps.${newPropertyNameInObj}\` if \`*PickerProps.${newPropertyNameInObj}\` does not exist`,
955
+ );
956
+
957
+ defineInlineTest(
958
+ { default: transformer, parser: 'tsx' },
959
+ {},
960
+ `
961
+ import React from 'react';
962
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
963
+
964
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
965
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
966
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
967
+
968
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} /></>;
969
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} /></>;
970
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} /></>;
971
+
972
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} /></div>; } }
973
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} /></div>; } }
974
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} /></div>; } }
975
+
976
+ const dateElement = <DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
977
+ const timeElement = <DateTimePicker timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
978
+ const bothElement = <DateTimePicker datePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} timePickerProps={{ times: [1, 2, 3], selectProps: { ${oldPropertyNameInObj}: "value" } }} />;
979
+ `,
980
+ `
981
+ import React from 'react';
982
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
983
+
984
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} />;
985
+ const TimeComponent1 = () => <DateTimePicker timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} />;
986
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} />;
987
+
988
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} /></>;
989
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} /></>;
990
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} /></>;
991
+
992
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} /></div>; } }
993
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} /></div>; } }
994
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} /></div>; } }
995
+
996
+ const dateElement = <DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} />;
997
+ const timeElement = <DateTimePicker timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} />;
998
+ const bothElement = <DateTimePicker datePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} timePickerProps={{ times: [1, 2, 3], ${newPropertyNameInObj}: "value" }} />;
999
+ `,
1000
+ `should migrate \`*PickerProps.${selectProps}.${propertyName}\` to \`*PickerProps.${newPropertyNameInObj}\` if \`*PickerProps.${newPropertyNameInObj}\` does not exist and not touch other props in *PickerProps`,
1001
+ );
1002
+
1003
+ defineInlineTest(
1004
+ { default: transformer, parser: 'tsx' },
1005
+ {},
1006
+ `
1007
+ import React from 'react';
1008
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1009
+
1010
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1011
+ const TimeComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1012
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1013
+
1014
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></>;
1015
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></>;
1016
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></>;
1017
+
1018
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></div>; } }
1019
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></div>; } }
1020
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></div>; } }
1021
+ Dat
1022
+ const dateElement = <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1023
+ const timeElement = <DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1024
+ const bothElement = <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1025
+ `,
1026
+ `
1027
+ import React from 'react';
1028
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1029
+
1030
+ const DateComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1031
+ const TimeComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1032
+ const BothComponent1 = () => <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1033
+
1034
+ const DateComponent2 = () => <><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></>;
1035
+ const TimeComponent2 = () => <><DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></>;
1036
+ const BothComponent2 = () => <><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></>;
1037
+
1038
+ class DateComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></div>; } }
1039
+ class TimeComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></div>; } }
1040
+ class BothComponent3 extends React.Component { render() { return <div><DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} /></div>; } }
1041
+ Dat
1042
+ const dateElement = <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1043
+ const timeElement = <DateTimePicker timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1044
+ const bothElement = <DateTimePicker datePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} timePickerProps={{ ${newPropertyNameInObj}: "value", selectProps: { ${oldPropertyNameInObj}: "not this one" } }} />;
1045
+ `,
1046
+ `should leave \`*PickerProps.${selectProps}.${propertyName}\` if \`*PickerProps.${newPropertyNameInObj}\` exists`,
1047
+ );
1048
+ });
1049
+ });
1050
+ });
1051
+
1052
+ describe('Complex interactions', () => {
1053
+ defineInlineTest(
1054
+ { default: transformer, parser: 'tsx' },
1055
+ {},
1056
+ `
1057
+ import React from 'react';
1058
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1059
+
1060
+ <DateTimePicker
1061
+ times={defaultTimes}
1062
+ datePickerSelectProps={{
1063
+ placeholder: intl.formatDate(new Date(new Date().getTime() - ONE_DAY_IN_MILLISECONDS)),
1064
+ 'aria-label': intl.formatMessage(messages.startDateInputLabel),
1065
+ }}
1066
+ timePickerSelectProps={{
1067
+ 'aria-label': intl.formatMessage(messages.startTimeInputLabel),
1068
+ }}
1069
+ />
1070
+ `,
1071
+ `
1072
+ import React from 'react';
1073
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1074
+
1075
+ <DateTimePicker
1076
+ timePickerProps={{
1077
+ times: defaultTimes,
1078
+ "label": intl.formatMessage(messages.startTimeInputLabel)
1079
+ }}
1080
+ datePickerProps={{
1081
+ "label": intl.formatMessage(messages.startDateInputLabel),
1082
+ "placeholder": intl.formatDate(new Date(new Date().getTime() - ONE_DAY_IN_MILLISECONDS))
1083
+ }} />
1084
+ `,
1085
+ `should migrate complex DateTimePicker with nested select props and picker to top-level props`,
1086
+ );
1087
+
1088
+ defineInlineTest(
1089
+ { default: transformer, parser: 'tsx' },
1090
+ {},
1091
+ `
1092
+ import React from 'react';
1093
+ import { DatePicker } from '@atlaskit/datetime-picker';
1094
+
1095
+ const Example = <>
1096
+ <Label labelFor="default-date-picker-example">Choose date</Label>
1097
+ <DatePicker
1098
+ selectProps={{
1099
+ inputId: 'default-date-picker-example',
1100
+ }}
1101
+ />
1102
+ </>
1103
+ `,
1104
+ `
1105
+ import React from 'react';
1106
+ import { DatePicker } from '@atlaskit/datetime-picker';
1107
+
1108
+ const Example = <>
1109
+ <Label labelFor="default-date-picker-example">Choose date</Label>
1110
+ <DatePicker
1111
+ id='default-date-picker-example'
1112
+ />
1113
+ </>
1114
+ `,
1115
+ 'should handle basic example',
1116
+ );
1117
+
1118
+ defineInlineTest(
1119
+ { default: transformer, parser: 'tsx' },
1120
+ {},
1121
+ `
1122
+ import React from 'react';
1123
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1124
+
1125
+ const Example = <>
1126
+ <Label labelFor="default-date-picker-example">Choose date</Label>
1127
+ <DateTimePicker
1128
+ timeIsEditable
1129
+ />
1130
+ </>
1131
+ `,
1132
+ `
1133
+ import React from 'react';
1134
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1135
+
1136
+ const Example = <>
1137
+ <Label labelFor="default-date-picker-example">Choose date</Label>
1138
+ <DateTimePicker
1139
+ timePickerProps={{
1140
+ timeIsEditable: true
1141
+ }}
1142
+ />
1143
+ </>
1144
+ `,
1145
+ 'should handle basic example',
1146
+ );
1147
+
1148
+ defineInlineTest(
1149
+ { default: transformer, parser: 'tsx' },
1150
+ {},
1151
+ `
1152
+ import React from 'react';
1153
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1154
+
1155
+ <DateTimePicker
1156
+ times={getDefaultTimes()}
1157
+ timeIsEditable
1158
+ />
1159
+ `,
1160
+ `
1161
+ import React from 'react';
1162
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1163
+
1164
+ <DateTimePicker
1165
+ timePickerProps={{
1166
+ times: getDefaultTimes(),
1167
+ timeIsEditable: true
1168
+ }} />
1169
+ `,
1170
+ 'should handle boolean attributes and remove brackets',
1171
+ );
1172
+
1173
+ defineInlineTest(
1174
+ { default: transformer, parser: 'tsx' },
1175
+ {},
1176
+ `
1177
+ import React from 'react';
1178
+ import { TimePicker } from '@atlaskit/datetime-picker';
1179
+
1180
+ <TimePicker
1181
+ selectProps={{
1182
+ inputId: input.id,
1183
+ 'aria-label': formatMessage(messages.selectTime),
1184
+ }}
1185
+ times={getDefaultTimes()}
1186
+ timeIsEditable
1187
+ />
1188
+ `,
1189
+ `
1190
+ import React from 'react';
1191
+ import { TimePicker } from '@atlaskit/datetime-picker';
1192
+
1193
+ <TimePicker
1194
+ times={getDefaultTimes()}
1195
+ timeIsEditable
1196
+ label={formatMessage(messages.selectTime)}
1197
+ id={input.id} />
1198
+ `,
1199
+ 'should handle variables when moving from select props into top level',
1200
+ );
1201
+
1202
+ defineInlineTest(
1203
+ { default: transformer, parser: 'tsx' },
1204
+ {},
1205
+ `
1206
+ import React from 'react';
1207
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1208
+
1209
+ <DateTimePicker
1210
+ datePickerSelectProps={props}
1211
+ />
1212
+ `,
1213
+ `
1214
+ import React from 'react';
1215
+ import { DateTimePicker } from '@atlaskit/datetime-picker';
1216
+
1217
+ <DateTimePicker
1218
+ datePickerProps={{
1219
+ selectProps: props
1220
+ }}
1221
+ />
1222
+ `,
1223
+ 'should handle variables when moving from select props into top level',
1224
+ );
1225
+ });