react-dropzone 11.2.0 → 11.2.4
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.
- package/.gitpod.yml +6 -0
- package/.nvmrc +1 -0
- package/README.md +17 -17
- package/dist/es/index.js +85 -74
- package/dist/es/utils/index.js +11 -6
- package/dist/index.js +2 -2
- package/examples/doka/README.md +140 -0
- package/package.json +61 -57
- package/src/index.js +46 -22
- package/src/index.spec.js +166 -125
- package/src/utils/index.js +2 -2
- package/src/utils/index.spec.js +20 -0
- package/styleguide.config.js +24 -5
- package/testSetup.js +0 -6
- package/vendor/doka/doka.esm.min.js +10 -0
- package/vendor/doka/doka.min.css +11 -0
package/src/index.spec.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint react/prop-types: 0, jsx-a11y/label-has-for: 0 */
|
|
2
2
|
import React, { createRef } from 'react'
|
|
3
|
-
import { cleanup, fireEvent, render } from '@testing-library/react'
|
|
3
|
+
import { act, cleanup, fireEvent, render, waitFor } from '@testing-library/react'
|
|
4
4
|
import { renderHook } from '@testing-library/react-hooks'
|
|
5
5
|
import { fromEvent } from 'file-selector'
|
|
6
6
|
import * as utils from './utils'
|
|
@@ -148,7 +148,7 @@ describe('useDropzone() hook', () => {
|
|
|
148
148
|
expect(dropzone).toHaveAttribute('aria-label', ariaLabel)
|
|
149
149
|
})
|
|
150
150
|
|
|
151
|
-
it('runs the custom callback handlers provided to the root props getter', () => {
|
|
151
|
+
it('runs the custom callback handlers provided to the root props getter', async () => {
|
|
152
152
|
const event = createDtWithFiles(files)
|
|
153
153
|
|
|
154
154
|
const rootProps = {
|
|
@@ -172,7 +172,7 @@ describe('useDropzone() hook', () => {
|
|
|
172
172
|
</Dropzone>
|
|
173
173
|
)
|
|
174
174
|
|
|
175
|
-
const { container } = render(ui)
|
|
175
|
+
const { container, rerender } = render(ui)
|
|
176
176
|
|
|
177
177
|
const dropzone = container.querySelector('div')
|
|
178
178
|
|
|
@@ -188,6 +188,7 @@ describe('useDropzone() hook', () => {
|
|
|
188
188
|
expect(rootProps.onBlur).toHaveBeenCalled()
|
|
189
189
|
|
|
190
190
|
fireEvent.dragEnter(dropzone, event)
|
|
191
|
+
await flushPromises(rerender, ui)
|
|
191
192
|
expect(rootProps.onDragEnter).toHaveBeenCalled()
|
|
192
193
|
|
|
193
194
|
fireEvent.dragOver(dropzone, event)
|
|
@@ -197,10 +198,11 @@ describe('useDropzone() hook', () => {
|
|
|
197
198
|
expect(rootProps.onDragLeave).toHaveBeenCalled()
|
|
198
199
|
|
|
199
200
|
fireEvent.drop(dropzone, event)
|
|
201
|
+
await flushPromises(rerender, ui)
|
|
200
202
|
expect(rootProps.onDrop).toHaveBeenCalled()
|
|
201
203
|
})
|
|
202
204
|
|
|
203
|
-
it('runs the custom callback handlers provided to the input props getter', () => {
|
|
205
|
+
it('runs the custom callback handlers provided to the input props getter', async () => {
|
|
204
206
|
const inputProps = {
|
|
205
207
|
onClick: jest.fn(),
|
|
206
208
|
onChange: jest.fn()
|
|
@@ -216,14 +218,16 @@ describe('useDropzone() hook', () => {
|
|
|
216
218
|
</Dropzone>
|
|
217
219
|
)
|
|
218
220
|
|
|
219
|
-
const { container } = render(ui)
|
|
221
|
+
const { container, rerender } = render(ui)
|
|
220
222
|
|
|
221
223
|
const input = container.querySelector('input')
|
|
222
224
|
|
|
223
225
|
fireEvent.click(input)
|
|
226
|
+
await flushPromises(rerender, ui)
|
|
224
227
|
expect(inputProps.onClick).toHaveBeenCalled()
|
|
225
228
|
|
|
226
229
|
fireEvent.change(input)
|
|
230
|
+
await flushPromises(rerender, ui)
|
|
227
231
|
expect(inputProps.onChange).toHaveBeenCalled()
|
|
228
232
|
})
|
|
229
233
|
|
|
@@ -308,7 +312,7 @@ describe('useDropzone() hook', () => {
|
|
|
308
312
|
const dropzoneRef = createRef()
|
|
309
313
|
const onClickSpy = jest.spyOn(HTMLInputElement.prototype, 'click')
|
|
310
314
|
|
|
311
|
-
const
|
|
315
|
+
const ui = (
|
|
312
316
|
<Dropzone ref={dropzoneRef}>
|
|
313
317
|
{({ getRootProps, getInputProps, isFocused }) => (
|
|
314
318
|
<div {...getRootProps()}>
|
|
@@ -319,11 +323,12 @@ describe('useDropzone() hook', () => {
|
|
|
319
323
|
</Dropzone>
|
|
320
324
|
)
|
|
321
325
|
|
|
326
|
+
const { rerender } = render(ui)
|
|
327
|
+
|
|
322
328
|
expect(dropzoneRef.current).not.toBeNull()
|
|
323
329
|
expect(typeof dropzoneRef.current.open).toEqual('function')
|
|
324
330
|
|
|
325
|
-
dropzoneRef.current.open()
|
|
326
|
-
|
|
331
|
+
act(() => dropzoneRef.current.open())
|
|
327
332
|
expect(onClickSpy).toHaveBeenCalled()
|
|
328
333
|
|
|
329
334
|
rerender(null)
|
|
@@ -336,7 +341,7 @@ describe('useDropzone() hook', () => {
|
|
|
336
341
|
const setRef = ref => (dropzoneRef = ref)
|
|
337
342
|
const onClickSpy = jest.spyOn(HTMLInputElement.prototype, 'click')
|
|
338
343
|
|
|
339
|
-
const
|
|
344
|
+
const ui = (
|
|
340
345
|
<Dropzone ref={setRef}>
|
|
341
346
|
{({ getRootProps, getInputProps, isFocused }) => (
|
|
342
347
|
<div {...getRootProps()}>
|
|
@@ -347,15 +352,15 @@ describe('useDropzone() hook', () => {
|
|
|
347
352
|
</Dropzone>
|
|
348
353
|
)
|
|
349
354
|
|
|
355
|
+
const { rerender } = render(ui)
|
|
356
|
+
|
|
350
357
|
expect(dropzoneRef).not.toBeNull()
|
|
351
358
|
expect(typeof dropzoneRef.open).toEqual('function')
|
|
352
359
|
|
|
353
|
-
dropzoneRef.open()
|
|
354
|
-
|
|
360
|
+
act(() => dropzoneRef.open())
|
|
355
361
|
expect(onClickSpy).toHaveBeenCalled()
|
|
356
362
|
|
|
357
363
|
rerender(null)
|
|
358
|
-
|
|
359
364
|
expect(dropzoneRef).toBeNull()
|
|
360
365
|
})
|
|
361
366
|
|
|
@@ -499,12 +504,12 @@ describe('useDropzone() hook', () => {
|
|
|
499
504
|
</Dropzone>
|
|
500
505
|
)
|
|
501
506
|
|
|
502
|
-
const { container } = render(ui)
|
|
507
|
+
const { container, rerender } = render(ui)
|
|
503
508
|
const dropzone = container.querySelector('#dropzone')
|
|
504
509
|
|
|
505
510
|
const fn = async () => {
|
|
506
511
|
fireDrop(dropzone, data)
|
|
507
|
-
await flushPromises(
|
|
512
|
+
await flushPromises(rerender, ui)
|
|
508
513
|
done()
|
|
509
514
|
}
|
|
510
515
|
|
|
@@ -665,7 +670,7 @@ describe('useDropzone() hook', () => {
|
|
|
665
670
|
const dropEvt = new Event('drop', { bubbles: true })
|
|
666
671
|
const dropEvtPreventDefaultSpy = jest.spyOn(dropEvt, 'preventDefault')
|
|
667
672
|
fireEvent(document.body, dropEvt)
|
|
668
|
-
expect(dropEvtPreventDefaultSpy).toHaveBeenCalledTimes(
|
|
673
|
+
expect(dropEvtPreventDefaultSpy).toHaveBeenCalledTimes(0)
|
|
669
674
|
})
|
|
670
675
|
})
|
|
671
676
|
|
|
@@ -708,12 +713,12 @@ describe('useDropzone() hook', () => {
|
|
|
708
713
|
</Dropzone>
|
|
709
714
|
)
|
|
710
715
|
|
|
711
|
-
const { container } = render(ui)
|
|
716
|
+
const { container, rerender } = render(ui)
|
|
712
717
|
|
|
713
718
|
const innerDropzone = container.querySelector('#inner-dropzone')
|
|
714
719
|
|
|
715
720
|
fireDragEnter(innerDropzone, data)
|
|
716
|
-
await flushPromises(
|
|
721
|
+
await flushPromises(rerender, ui)
|
|
717
722
|
expect(innerProps.onDragEnter).toHaveBeenCalled()
|
|
718
723
|
expect(parentProps.onDragEnter).toHaveBeenCalled()
|
|
719
724
|
|
|
@@ -726,7 +731,7 @@ describe('useDropzone() hook', () => {
|
|
|
726
731
|
expect(parentProps.onDragLeave).toHaveBeenCalled()
|
|
727
732
|
|
|
728
733
|
fireDrop(innerDropzone, data)
|
|
729
|
-
await flushPromises(
|
|
734
|
+
await flushPromises(rerender, ui)
|
|
730
735
|
expect(innerProps.onDrop).toHaveBeenCalled()
|
|
731
736
|
expect(parentProps.onDrop).toHaveBeenCalled()
|
|
732
737
|
})
|
|
@@ -774,12 +779,12 @@ describe('useDropzone() hook', () => {
|
|
|
774
779
|
</Dropzone>
|
|
775
780
|
)
|
|
776
781
|
|
|
777
|
-
const { container } = render(ui)
|
|
782
|
+
const { container, rerender } = render(ui)
|
|
778
783
|
|
|
779
784
|
const innerDropzone = container.querySelector('#inner-dropzone')
|
|
780
785
|
|
|
781
786
|
fireDragEnter(innerDropzone, data)
|
|
782
|
-
await flushPromises(
|
|
787
|
+
await flushPromises(rerender, ui)
|
|
783
788
|
expect(innerProps.onDragEnter).toHaveBeenCalled()
|
|
784
789
|
expect(parentProps.onDragEnter).not.toHaveBeenCalled()
|
|
785
790
|
|
|
@@ -792,7 +797,7 @@ describe('useDropzone() hook', () => {
|
|
|
792
797
|
expect(parentProps.onDragLeave).not.toHaveBeenCalled()
|
|
793
798
|
|
|
794
799
|
fireDrop(innerDropzone, data)
|
|
795
|
-
await flushPromises(
|
|
800
|
+
await flushPromises(rerender, ui)
|
|
796
801
|
expect(innerProps.onDrop).toHaveBeenCalled()
|
|
797
802
|
expect(parentProps.onDrop).not.toHaveBeenCalled()
|
|
798
803
|
})
|
|
@@ -833,17 +838,17 @@ describe('useDropzone() hook', () => {
|
|
|
833
838
|
</Dropzone>
|
|
834
839
|
)
|
|
835
840
|
|
|
836
|
-
const { container } = render(ui)
|
|
841
|
+
const { container, rerender } = render(ui)
|
|
837
842
|
|
|
838
843
|
const outerDropzone = container.querySelector('#outer-dropzone')
|
|
839
844
|
const innerDropzone = container.querySelector('#inner-dropzone')
|
|
840
845
|
|
|
841
846
|
// Sets drag targets on the outer dropzone
|
|
842
847
|
fireDragEnter(outerDropzone, data)
|
|
843
|
-
await flushPromises(
|
|
848
|
+
await flushPromises(rerender, ui)
|
|
844
849
|
|
|
845
850
|
fireDragEnter(innerDropzone, data)
|
|
846
|
-
await flushPromises(
|
|
851
|
+
await flushPromises(rerender, ui)
|
|
847
852
|
expect(innerProps.onDragEnter).toHaveBeenCalled()
|
|
848
853
|
expect(parentProps.onDragEnter).toHaveBeenCalledTimes(1)
|
|
849
854
|
|
|
@@ -856,7 +861,7 @@ describe('useDropzone() hook', () => {
|
|
|
856
861
|
expect(parentProps.onDragLeave).not.toHaveBeenCalled()
|
|
857
862
|
|
|
858
863
|
fireDrop(innerDropzone, data)
|
|
859
|
-
await flushPromises(
|
|
864
|
+
await flushPromises(rerender, ui)
|
|
860
865
|
expect(innerProps.onDrop).toHaveBeenCalled()
|
|
861
866
|
expect(parentProps.onDrop).not.toHaveBeenCalled()
|
|
862
867
|
})
|
|
@@ -885,16 +890,16 @@ describe('useDropzone() hook', () => {
|
|
|
885
890
|
</Dropzone>
|
|
886
891
|
)
|
|
887
892
|
|
|
888
|
-
const { container } = render(ui)
|
|
893
|
+
const { container, rerender } = render(ui)
|
|
889
894
|
|
|
890
895
|
const parentDropzone = container.querySelector('#parent-dropzone')
|
|
891
896
|
|
|
892
897
|
fireDragEnter(parentDropzone, data)
|
|
893
|
-
await flushPromises(
|
|
898
|
+
await flushPromises(rerender, ui)
|
|
894
899
|
|
|
895
900
|
const innerDropzone = container.querySelector('#inner-dropzone')
|
|
896
901
|
fireDragEnter(innerDropzone, data)
|
|
897
|
-
await flushPromises(
|
|
902
|
+
await flushPromises(rerender, ui)
|
|
898
903
|
|
|
899
904
|
fireDragLeave(innerDropzone, data)
|
|
900
905
|
expect(innerDragLeave).toHaveBeenCalled()
|
|
@@ -923,11 +928,11 @@ describe('useDropzone() hook', () => {
|
|
|
923
928
|
)}
|
|
924
929
|
</Dropzone>
|
|
925
930
|
)
|
|
926
|
-
const { container } = render(ui)
|
|
931
|
+
const { container, rerender } = render(ui)
|
|
927
932
|
const dropzone = container.querySelector('div')
|
|
928
933
|
|
|
929
934
|
fireDragEnter(dropzone, data)
|
|
930
|
-
await flushPromises(
|
|
935
|
+
await flushPromises(rerender, ui)
|
|
931
936
|
expect(props.onDragEnter).toHaveBeenCalled()
|
|
932
937
|
|
|
933
938
|
fireDragOver(dropzone, data)
|
|
@@ -937,7 +942,7 @@ describe('useDropzone() hook', () => {
|
|
|
937
942
|
expect(props.onDragLeave).toHaveBeenCalled()
|
|
938
943
|
|
|
939
944
|
fireDrop(dropzone, data)
|
|
940
|
-
await flushPromises(
|
|
945
|
+
await flushPromises(rerender, ui)
|
|
941
946
|
expect(props.onDrop).toHaveBeenCalled()
|
|
942
947
|
|
|
943
948
|
expect(props.getFilesFromEvent).toHaveBeenCalledTimes(2)
|
|
@@ -1277,7 +1282,7 @@ describe('useDropzone() hook', () => {
|
|
|
1277
1282
|
const isIeOrEdgeSpy = jest.spyOn(utils, 'isIeOrEdge').mockReturnValueOnce(true)
|
|
1278
1283
|
const onClickSpy = jest.spyOn(HTMLInputElement.prototype, 'click')
|
|
1279
1284
|
|
|
1280
|
-
const
|
|
1285
|
+
const ui = (
|
|
1281
1286
|
<Dropzone>
|
|
1282
1287
|
{({ getRootProps, getInputProps }) => (
|
|
1283
1288
|
<div {...getRootProps()}>
|
|
@@ -1287,10 +1292,12 @@ describe('useDropzone() hook', () => {
|
|
|
1287
1292
|
</Dropzone>
|
|
1288
1293
|
)
|
|
1289
1294
|
|
|
1295
|
+
const { container } = render(ui)
|
|
1296
|
+
|
|
1290
1297
|
const dropzone = container.querySelector('div')
|
|
1291
1298
|
|
|
1292
1299
|
fireEvent.click(dropzone)
|
|
1293
|
-
|
|
1300
|
+
drainTimers()
|
|
1294
1301
|
|
|
1295
1302
|
expect(onClickSpy).toHaveBeenCalled()
|
|
1296
1303
|
jest.useRealTimers()
|
|
@@ -1467,11 +1474,11 @@ describe('useDropzone() hook', () => {
|
|
|
1467
1474
|
)}
|
|
1468
1475
|
</Dropzone>
|
|
1469
1476
|
)
|
|
1470
|
-
const { container } = render(ui)
|
|
1477
|
+
const { container, rerender } = render(ui)
|
|
1471
1478
|
const dropzone = container.querySelector('div')
|
|
1472
1479
|
|
|
1473
1480
|
fireDragEnter(dropzone, data)
|
|
1474
|
-
await flushPromises(
|
|
1481
|
+
await flushPromises(rerender, ui)
|
|
1475
1482
|
expect(props.onDragEnter).toHaveBeenCalled()
|
|
1476
1483
|
|
|
1477
1484
|
fireDragOver(dropzone, data)
|
|
@@ -1481,7 +1488,7 @@ describe('useDropzone() hook', () => {
|
|
|
1481
1488
|
expect(props.onDragLeave).toHaveBeenCalled()
|
|
1482
1489
|
|
|
1483
1490
|
fireDrop(dropzone, data)
|
|
1484
|
-
await flushPromises(
|
|
1491
|
+
await flushPromises(rerender, ui)
|
|
1485
1492
|
expect(props.onDrop).toHaveBeenCalled()
|
|
1486
1493
|
})
|
|
1487
1494
|
|
|
@@ -1506,11 +1513,11 @@ describe('useDropzone() hook', () => {
|
|
|
1506
1513
|
)}
|
|
1507
1514
|
</Dropzone>
|
|
1508
1515
|
)
|
|
1509
|
-
const { container } = render(ui)
|
|
1516
|
+
const { container, rerender } = render(ui)
|
|
1510
1517
|
const dropzone = container.querySelector('div')
|
|
1511
1518
|
|
|
1512
1519
|
fireDragEnter(dropzone, emptyData)
|
|
1513
|
-
await flushPromises(
|
|
1520
|
+
await flushPromises(rerender, ui)
|
|
1514
1521
|
expect(props.onDragEnter).toHaveBeenCalled()
|
|
1515
1522
|
|
|
1516
1523
|
fireDragOver(dropzone, emptyData)
|
|
@@ -1521,7 +1528,7 @@ describe('useDropzone() hook', () => {
|
|
|
1521
1528
|
|
|
1522
1529
|
const data = createDtWithFiles(files)
|
|
1523
1530
|
fireDrop(dropzone, data)
|
|
1524
|
-
await flushPromises(
|
|
1531
|
+
await flushPromises(rerender, ui)
|
|
1525
1532
|
expect(props.onDrop).toHaveBeenCalled()
|
|
1526
1533
|
expect(props.onDropAccepted).toHaveBeenCalledWith(files, expect.any(Object))
|
|
1527
1534
|
expect(props.onDropRejected).not.toHaveBeenCalled()
|
|
@@ -1553,11 +1560,11 @@ describe('useDropzone() hook', () => {
|
|
|
1553
1560
|
)}
|
|
1554
1561
|
</Dropzone>
|
|
1555
1562
|
)
|
|
1556
|
-
const { container } = render(ui)
|
|
1563
|
+
const { container, rerender } = render(ui)
|
|
1557
1564
|
const dropzone = container.querySelector('div')
|
|
1558
1565
|
|
|
1559
1566
|
fireDragEnter(dropzone, data)
|
|
1560
|
-
await flushPromises(
|
|
1567
|
+
await flushPromises(rerender, ui)
|
|
1561
1568
|
expect(props.onDragEnter).not.toHaveBeenCalled()
|
|
1562
1569
|
|
|
1563
1570
|
fireDragOver(dropzone, data)
|
|
@@ -1567,7 +1574,7 @@ describe('useDropzone() hook', () => {
|
|
|
1567
1574
|
expect(props.onDragLeave).not.toHaveBeenCalled()
|
|
1568
1575
|
|
|
1569
1576
|
fireDrop(dropzone, data)
|
|
1570
|
-
await flushPromises(
|
|
1577
|
+
await flushPromises(rerender, ui)
|
|
1571
1578
|
expect(props.onDrop).not.toHaveBeenCalled()
|
|
1572
1579
|
expect(props.onDropAccepted).not.toHaveBeenCalled()
|
|
1573
1580
|
expect(props.onDropRejected).not.toHaveBeenCalled()
|
|
@@ -1594,11 +1601,11 @@ describe('useDropzone() hook', () => {
|
|
|
1594
1601
|
)}
|
|
1595
1602
|
</Dropzone>
|
|
1596
1603
|
)
|
|
1597
|
-
const { container } = render(ui)
|
|
1604
|
+
const { container, rerender } = render(ui)
|
|
1598
1605
|
const dropzone = container.querySelector('div')
|
|
1599
1606
|
|
|
1600
1607
|
fireDragEnter(dropzone, data)
|
|
1601
|
-
await flushPromises(
|
|
1608
|
+
await flushPromises(rerender, ui)
|
|
1602
1609
|
expect(props.onDragEnter).not.toHaveBeenCalled()
|
|
1603
1610
|
|
|
1604
1611
|
fireDragOver(dropzone, data)
|
|
@@ -1608,7 +1615,7 @@ describe('useDropzone() hook', () => {
|
|
|
1608
1615
|
expect(props.onDragLeave).not.toHaveBeenCalled()
|
|
1609
1616
|
|
|
1610
1617
|
fireDrop(dropzone, data)
|
|
1611
|
-
await flushPromises(
|
|
1618
|
+
await flushPromises(rerender, ui)
|
|
1612
1619
|
expect(props.onDrop).not.toHaveBeenCalled()
|
|
1613
1620
|
expect(props.onDropAccepted).not.toHaveBeenCalled()
|
|
1614
1621
|
expect(props.onDropRejected).not.toHaveBeenCalled()
|
|
@@ -1637,7 +1644,7 @@ describe('useDropzone() hook', () => {
|
|
|
1637
1644
|
const dropzone = container.querySelector('div')
|
|
1638
1645
|
|
|
1639
1646
|
fireDragEnter(dropzone, data)
|
|
1640
|
-
await flushPromises(
|
|
1647
|
+
await flushPromises(rerender, noDragUi)
|
|
1641
1648
|
expect(props.onDragEnter).not.toHaveBeenCalled()
|
|
1642
1649
|
|
|
1643
1650
|
fireDragOver(dropzone, data)
|
|
@@ -1647,7 +1654,7 @@ describe('useDropzone() hook', () => {
|
|
|
1647
1654
|
expect(props.onDragLeave).not.toHaveBeenCalled()
|
|
1648
1655
|
|
|
1649
1656
|
fireDrop(dropzone, data)
|
|
1650
|
-
await flushPromises(
|
|
1657
|
+
await flushPromises(rerender, noDragUi)
|
|
1651
1658
|
expect(props.onDrop).not.toHaveBeenCalled()
|
|
1652
1659
|
|
|
1653
1660
|
const ui = (
|
|
@@ -1662,7 +1669,7 @@ describe('useDropzone() hook', () => {
|
|
|
1662
1669
|
rerender(ui)
|
|
1663
1670
|
|
|
1664
1671
|
fireDragEnter(dropzone, data)
|
|
1665
|
-
await flushPromises(
|
|
1672
|
+
await flushPromises(rerender, ui)
|
|
1666
1673
|
expect(props.onDragEnter).toHaveBeenCalled()
|
|
1667
1674
|
|
|
1668
1675
|
fireDragOver(dropzone, data)
|
|
@@ -1672,7 +1679,7 @@ describe('useDropzone() hook', () => {
|
|
|
1672
1679
|
expect(props.onDragLeave).toHaveBeenCalled()
|
|
1673
1680
|
|
|
1674
1681
|
fireDrop(dropzone, data)
|
|
1675
|
-
await flushPromises(
|
|
1682
|
+
await flushPromises(rerender, ui)
|
|
1676
1683
|
expect(props.onDrop).toHaveBeenCalled()
|
|
1677
1684
|
})
|
|
1678
1685
|
|
|
@@ -1689,12 +1696,12 @@ describe('useDropzone() hook', () => {
|
|
|
1689
1696
|
)}
|
|
1690
1697
|
</Dropzone>
|
|
1691
1698
|
)
|
|
1692
|
-
const { container } = render(ui)
|
|
1699
|
+
const { container, rerender } = render(ui)
|
|
1693
1700
|
const dropzone = container.querySelector('div')
|
|
1694
1701
|
|
|
1695
1702
|
const data = createDtWithFiles(files)
|
|
1696
1703
|
fireDragEnter(dropzone, data)
|
|
1697
|
-
await flushPromises(
|
|
1704
|
+
await flushPromises(rerender, ui)
|
|
1698
1705
|
|
|
1699
1706
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
1700
1707
|
expect(dropzone).toHaveTextContent('dragAccept')
|
|
@@ -1714,12 +1721,12 @@ describe('useDropzone() hook', () => {
|
|
|
1714
1721
|
)}
|
|
1715
1722
|
</Dropzone>
|
|
1716
1723
|
)
|
|
1717
|
-
const { container } = render(ui)
|
|
1724
|
+
const { container, rerender } = render(ui)
|
|
1718
1725
|
const dropzone = container.querySelector('div')
|
|
1719
1726
|
|
|
1720
1727
|
const data = createDtWithFiles([...files, ...images])
|
|
1721
1728
|
fireDragEnter(dropzone, data)
|
|
1722
|
-
await flushPromises(
|
|
1729
|
+
await flushPromises(rerender, ui)
|
|
1723
1730
|
|
|
1724
1731
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
1725
1732
|
expect(dropzone).not.toHaveTextContent('dragAccept')
|
|
@@ -1738,12 +1745,12 @@ describe('useDropzone() hook', () => {
|
|
|
1738
1745
|
)}
|
|
1739
1746
|
</Dropzone>
|
|
1740
1747
|
)
|
|
1741
|
-
const { container } = render(ui)
|
|
1748
|
+
const { container, rerender } = render(ui)
|
|
1742
1749
|
const dropzone = container.querySelector('div')
|
|
1743
1750
|
|
|
1744
1751
|
const data = createDtWithFiles(files)
|
|
1745
1752
|
fireDragEnter(dropzone, data)
|
|
1746
|
-
await flushPromises(
|
|
1753
|
+
await flushPromises(rerender, ui)
|
|
1747
1754
|
|
|
1748
1755
|
expect(dropzone).not.toHaveTextContent('dragAccept')
|
|
1749
1756
|
expect(dropzone).toHaveTextContent('dragReject')
|
|
@@ -1762,12 +1769,12 @@ describe('useDropzone() hook', () => {
|
|
|
1762
1769
|
)}
|
|
1763
1770
|
</Dropzone>
|
|
1764
1771
|
)
|
|
1765
|
-
const { container } = render(ui)
|
|
1772
|
+
const { container, rerender } = render(ui)
|
|
1766
1773
|
const dropzone = container.querySelector('div')
|
|
1767
1774
|
|
|
1768
1775
|
const data = createDtWithFiles(images)
|
|
1769
1776
|
fireDragEnter(dropzone, data)
|
|
1770
|
-
await flushPromises(
|
|
1777
|
+
await flushPromises(rerender, ui)
|
|
1771
1778
|
|
|
1772
1779
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
1773
1780
|
expect(dropzone).not.toHaveTextContent('dragAccept')
|
|
@@ -1788,12 +1795,12 @@ describe('useDropzone() hook', () => {
|
|
|
1788
1795
|
)}
|
|
1789
1796
|
</Dropzone>
|
|
1790
1797
|
)
|
|
1791
|
-
const { container } = render(ui)
|
|
1798
|
+
const { container, rerender } = render(ui)
|
|
1792
1799
|
const dropzone = container.querySelector('div')
|
|
1793
1800
|
|
|
1794
1801
|
const data = createDtWithFiles(files)
|
|
1795
1802
|
fireDragEnter(dropzone, data)
|
|
1796
|
-
await flushPromises(
|
|
1803
|
+
await flushPromises(rerender, ui)
|
|
1797
1804
|
|
|
1798
1805
|
const event = new Event('dragleave', { bubbles: true })
|
|
1799
1806
|
Object.defineProperty(event, 'target', {
|
|
@@ -1823,7 +1830,7 @@ describe('useDropzone() hook', () => {
|
|
|
1823
1830
|
|
|
1824
1831
|
const data = createDtWithFiles(images)
|
|
1825
1832
|
fireDragEnter(dropzone, data)
|
|
1826
|
-
await flushPromises(
|
|
1833
|
+
await flushPromises(rerender, ui)
|
|
1827
1834
|
|
|
1828
1835
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
1829
1836
|
expect(dropzone).toHaveTextContent('dragAccept')
|
|
@@ -1863,29 +1870,29 @@ describe('useDropzone() hook', () => {
|
|
|
1863
1870
|
)}
|
|
1864
1871
|
</Dropzone>
|
|
1865
1872
|
)
|
|
1866
|
-
const { container } = render(ui)
|
|
1873
|
+
const { container, rerender } = render(ui)
|
|
1867
1874
|
const dropzone = container.querySelector('div')
|
|
1868
1875
|
|
|
1869
1876
|
const data = createDtWithFiles(images)
|
|
1870
1877
|
|
|
1871
1878
|
fireDragEnter(container.querySelector('#child'), data)
|
|
1872
1879
|
fireDragEnter(dropzone, data)
|
|
1873
|
-
await flushPromises(
|
|
1880
|
+
await flushPromises(rerender, ui)
|
|
1874
1881
|
fireDragEnter(dropzone, data)
|
|
1875
|
-
await flushPromises(
|
|
1882
|
+
await flushPromises(rerender, ui)
|
|
1876
1883
|
|
|
1877
1884
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
1878
1885
|
expect(dropzone).toHaveTextContent('dragAccept')
|
|
1879
1886
|
expect(dropzone).not.toHaveTextContent('dragReject')
|
|
1880
1887
|
|
|
1881
1888
|
fireDragLeave(dropzone, data)
|
|
1882
|
-
await flushPromises(
|
|
1889
|
+
await flushPromises(rerender, ui)
|
|
1883
1890
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
1884
1891
|
expect(dropzone).toHaveTextContent('dragAccept')
|
|
1885
1892
|
expect(dropzone).not.toHaveTextContent('dragReject')
|
|
1886
1893
|
|
|
1887
1894
|
fireDragLeave(dropzone, data)
|
|
1888
|
-
await flushPromises(
|
|
1895
|
+
await flushPromises(rerender, ui)
|
|
1889
1896
|
expect(dropzone).not.toHaveTextContent('dragActive')
|
|
1890
1897
|
expect(dropzone).not.toHaveTextContent('dragAccept')
|
|
1891
1898
|
expect(dropzone).not.toHaveTextContent('dragReject')
|
|
@@ -1909,13 +1916,13 @@ describe('useDropzone() hook', () => {
|
|
|
1909
1916
|
)}
|
|
1910
1917
|
</Dropzone>
|
|
1911
1918
|
)
|
|
1912
|
-
const { container } = render(ui)
|
|
1919
|
+
const { container, rerender } = render(ui)
|
|
1913
1920
|
const input = container.querySelector('input')
|
|
1914
1921
|
|
|
1915
1922
|
Object.defineProperty(input, 'files', { value: files })
|
|
1916
1923
|
|
|
1917
1924
|
dispatchEvt(input, 'change')
|
|
1918
|
-
await flushPromises(
|
|
1925
|
+
await flushPromises(rerender, ui)
|
|
1919
1926
|
|
|
1920
1927
|
expect(onDropSpy).toHaveBeenCalledWith(files, [], expect.anything())
|
|
1921
1928
|
})
|
|
@@ -1967,17 +1974,17 @@ describe('useDropzone() hook', () => {
|
|
|
1967
1974
|
)}
|
|
1968
1975
|
</Dropzone>
|
|
1969
1976
|
)
|
|
1970
|
-
const { container } = render(ui)
|
|
1977
|
+
const { container, rerender } = render(ui)
|
|
1971
1978
|
const dropzone = container.querySelector('div')
|
|
1972
1979
|
|
|
1973
1980
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
1974
|
-
await flushPromises(
|
|
1981
|
+
await flushPromises(rerender, ui)
|
|
1975
1982
|
const acceptedFileList = getAcceptedFiles(dropzone)
|
|
1976
1983
|
expect(acceptedFileList).toHaveLength(images.length)
|
|
1977
1984
|
expect(matchToFiles(acceptedFileList, images)).toBe(true)
|
|
1978
1985
|
|
|
1979
1986
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
1980
|
-
await flushPromises(
|
|
1987
|
+
await flushPromises(rerender, ui)
|
|
1981
1988
|
const rejectedFileList = getRejectedFiles(dropzone)
|
|
1982
1989
|
expect(rejectedFileList).toHaveLength(files.length)
|
|
1983
1990
|
expect(matchToFiles(rejectedFileList, files)).toBe(true)
|
|
@@ -1986,7 +1993,6 @@ describe('useDropzone() hook', () => {
|
|
|
1986
1993
|
expect(matchToErrorCode(rejectedFileErrorList, 'file-invalid-type')).toBe(true)
|
|
1987
1994
|
})
|
|
1988
1995
|
|
|
1989
|
-
|
|
1990
1996
|
it('resets {isDragActive, isDragAccept, isDragReject}', async () => {
|
|
1991
1997
|
const ui = (
|
|
1992
1998
|
<Dropzone>
|
|
@@ -2000,20 +2006,20 @@ describe('useDropzone() hook', () => {
|
|
|
2000
2006
|
)}
|
|
2001
2007
|
</Dropzone>
|
|
2002
2008
|
)
|
|
2003
|
-
const { container } = render(ui)
|
|
2009
|
+
const { container, rerender } = render(ui)
|
|
2004
2010
|
const dropzone = container.querySelector('div')
|
|
2005
2011
|
|
|
2006
2012
|
const data = createDtWithFiles(files)
|
|
2007
2013
|
|
|
2008
2014
|
fireDragEnter(dropzone, data)
|
|
2009
|
-
await flushPromises(
|
|
2015
|
+
await flushPromises(rerender, ui)
|
|
2010
2016
|
|
|
2011
2017
|
expect(dropzone).toHaveTextContent('dragActive')
|
|
2012
2018
|
expect(dropzone).toHaveTextContent('dragAccept')
|
|
2013
2019
|
expect(dropzone).not.toHaveTextContent('dragReject')
|
|
2014
2020
|
|
|
2015
2021
|
fireDrop(dropzone, data)
|
|
2016
|
-
await flushPromises(
|
|
2022
|
+
await flushPromises(rerender, ui)
|
|
2017
2023
|
expect(dropzone).not.toHaveTextContent('dragActive')
|
|
2018
2024
|
expect(dropzone).not.toHaveTextContent('dragAccept')
|
|
2019
2025
|
expect(dropzone).not.toHaveTextContent('dragReject')
|
|
@@ -2030,11 +2036,11 @@ describe('useDropzone() hook', () => {
|
|
|
2030
2036
|
)}
|
|
2031
2037
|
</Dropzone>
|
|
2032
2038
|
)
|
|
2033
|
-
const { container } = render(ui)
|
|
2039
|
+
const { container, rerender } = render(ui)
|
|
2034
2040
|
const dropzone = container.querySelector('div')
|
|
2035
2041
|
|
|
2036
2042
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2037
|
-
await flushPromises(
|
|
2043
|
+
await flushPromises(rerender, ui)
|
|
2038
2044
|
expect(onDropSpy).toHaveBeenCalledWith([], [
|
|
2039
2045
|
{
|
|
2040
2046
|
file: files[0],
|
|
@@ -2059,11 +2065,11 @@ describe('useDropzone() hook', () => {
|
|
|
2059
2065
|
)}
|
|
2060
2066
|
</Dropzone>
|
|
2061
2067
|
)
|
|
2062
|
-
const { container } = render(ui)
|
|
2068
|
+
const { container, rerender } = render(ui)
|
|
2063
2069
|
const dropzone = container.querySelector('div')
|
|
2064
2070
|
|
|
2065
2071
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2066
|
-
await flushPromises(
|
|
2072
|
+
await flushPromises(rerender, ui)
|
|
2067
2073
|
expect(onDropSpy).toHaveBeenCalledWith([], [
|
|
2068
2074
|
{
|
|
2069
2075
|
file: images[0],
|
|
@@ -2091,18 +2097,24 @@ describe('useDropzone() hook', () => {
|
|
|
2091
2097
|
const onDropRejectedSpy = jest.fn()
|
|
2092
2098
|
const ui = (
|
|
2093
2099
|
<Dropzone accept="image/*" onDrop={onDropSpy} onDropRejected={onDropRejectedSpy} multiple={true} maxFiles={1}>
|
|
2094
|
-
{({ getRootProps, getInputProps }) => (
|
|
2100
|
+
{({ getRootProps, getInputProps, isDragReject, isDragAccept }) => (
|
|
2095
2101
|
<div {...getRootProps()}>
|
|
2096
2102
|
<input {...getInputProps()} />
|
|
2103
|
+
{isDragReject && 'dragReject'}
|
|
2104
|
+
{isDragAccept && 'dragAccept'}
|
|
2097
2105
|
</div>
|
|
2098
2106
|
)}
|
|
2099
2107
|
</Dropzone>
|
|
2100
2108
|
)
|
|
2101
|
-
const { container } = render(ui)
|
|
2109
|
+
const { container, rerender } = render(ui)
|
|
2102
2110
|
const dropzone = container.querySelector('div')
|
|
2103
2111
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2104
|
-
await flushPromises(
|
|
2112
|
+
await flushPromises(rerender, ui)
|
|
2105
2113
|
expect(onDropRejectedSpy).toHaveBeenCalled()
|
|
2114
|
+
fireDragEnter(dropzone, createDtWithFiles(images))
|
|
2115
|
+
await flushPromises(rerender, ui)
|
|
2116
|
+
expect(dropzone).toHaveTextContent('dragReject')
|
|
2117
|
+
expect(dropzone).not.toHaveTextContent('dragAccept')
|
|
2106
2118
|
expect(onDropSpy).toHaveBeenCalledWith([], [
|
|
2107
2119
|
{
|
|
2108
2120
|
file: images[0],
|
|
@@ -2125,6 +2137,36 @@ describe('useDropzone() hook', () => {
|
|
|
2125
2137
|
], expect.anything())
|
|
2126
2138
|
})
|
|
2127
2139
|
|
|
2140
|
+
it('rejects all files if {multiple} is true and maxFiles has been updated so that it is less than files', async () => {
|
|
2141
|
+
const onDropSpy = jest.fn()
|
|
2142
|
+
const onDropRejectedSpy = jest.fn()
|
|
2143
|
+
const ui = (maxFiles) => (
|
|
2144
|
+
<Dropzone accept="image/*" onDrop={onDropSpy} multiple={true} maxFiles={maxFiles} onDropRejected={onDropRejectedSpy}>
|
|
2145
|
+
{({ getRootProps, getInputProps }) => (
|
|
2146
|
+
<div {...getRootProps()}>
|
|
2147
|
+
<input {...getInputProps()} />
|
|
2148
|
+
</div>
|
|
2149
|
+
)}
|
|
2150
|
+
</Dropzone>
|
|
2151
|
+
)
|
|
2152
|
+
const { container, rerender } = render(ui(3))
|
|
2153
|
+
const dropzone = container.querySelector('div')
|
|
2154
|
+
|
|
2155
|
+
fireDrop(dropzone, createDtWithFiles(images))
|
|
2156
|
+
await flushPromises(rerender, ui(3))
|
|
2157
|
+
expect(onDropRejectedSpy).not.toHaveBeenCalled()
|
|
2158
|
+
expect(onDropSpy).toHaveBeenCalledWith(images, [], expect.anything())
|
|
2159
|
+
|
|
2160
|
+
rerender(ui(1));
|
|
2161
|
+
|
|
2162
|
+
fireDrop(dropzone, createDtWithFiles(images))
|
|
2163
|
+
await flushPromises(rerender, ui(1))
|
|
2164
|
+
expect(onDropRejectedSpy).toHaveBeenCalledWith(
|
|
2165
|
+
expect.arrayContaining(images.map((image) => expect.objectContaining({ errors: expect.any(Array), file: image }))),
|
|
2166
|
+
expect.anything()
|
|
2167
|
+
)
|
|
2168
|
+
})
|
|
2169
|
+
|
|
2128
2170
|
it('accepts multiple files if {multiple} is true and {accept} criteria is met', async () => {
|
|
2129
2171
|
const onDropSpy = jest.fn()
|
|
2130
2172
|
const onDropRejectedSpy = jest.fn()
|
|
@@ -2137,15 +2179,15 @@ describe('useDropzone() hook', () => {
|
|
|
2137
2179
|
)}
|
|
2138
2180
|
</Dropzone>
|
|
2139
2181
|
)
|
|
2140
|
-
const { container } = render(ui)
|
|
2182
|
+
const { container, rerender } = render(ui)
|
|
2141
2183
|
const dropzone = container.querySelector('div')
|
|
2142
2184
|
|
|
2143
2185
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2144
|
-
await flushPromises(
|
|
2186
|
+
await flushPromises(rerender, ui)
|
|
2145
2187
|
expect(onDropRejectedSpy).not.toHaveBeenCalled()
|
|
2146
2188
|
expect(onDropSpy).toHaveBeenCalledWith(images, [], expect.anything())
|
|
2147
2189
|
})
|
|
2148
|
-
|
|
2190
|
+
|
|
2149
2191
|
it('accepts a single files if {multiple} is false and {accept} criteria is met', async () => {
|
|
2150
2192
|
const onDropSpy = jest.fn()
|
|
2151
2193
|
const ui = (
|
|
@@ -2157,12 +2199,12 @@ describe('useDropzone() hook', () => {
|
|
|
2157
2199
|
)}
|
|
2158
2200
|
</Dropzone>
|
|
2159
2201
|
)
|
|
2160
|
-
const { container } = render(ui)
|
|
2202
|
+
const { container, rerender } = render(ui)
|
|
2161
2203
|
const dropzone = container.querySelector('div')
|
|
2162
2204
|
|
|
2163
2205
|
const [image] = images
|
|
2164
2206
|
fireDrop(dropzone, createDtWithFiles([image]))
|
|
2165
|
-
await flushPromises(
|
|
2207
|
+
await flushPromises(rerender, ui)
|
|
2166
2208
|
expect(onDropSpy).toHaveBeenCalledWith([image], [], expect.anything())
|
|
2167
2209
|
})
|
|
2168
2210
|
|
|
@@ -2177,11 +2219,11 @@ describe('useDropzone() hook', () => {
|
|
|
2177
2219
|
)}
|
|
2178
2220
|
</Dropzone>
|
|
2179
2221
|
)
|
|
2180
|
-
const { container } = render(ui)
|
|
2222
|
+
const { container, rerender } = render(ui)
|
|
2181
2223
|
const dropzone = container.querySelector('div')
|
|
2182
2224
|
|
|
2183
2225
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2184
|
-
await flushPromises(
|
|
2226
|
+
await flushPromises(rerender, ui)
|
|
2185
2227
|
expect(onDropSpy).toHaveBeenCalledWith(files, [], expect.anything())
|
|
2186
2228
|
})
|
|
2187
2229
|
|
|
@@ -2203,7 +2245,7 @@ describe('useDropzone() hook', () => {
|
|
|
2203
2245
|
)}
|
|
2204
2246
|
</Dropzone>
|
|
2205
2247
|
)
|
|
2206
|
-
const { container } = render(ui)
|
|
2248
|
+
const { container, rerender } = render(ui)
|
|
2207
2249
|
const dropzone = container.querySelector('div')
|
|
2208
2250
|
const btn = container.querySelector('button')
|
|
2209
2251
|
|
|
@@ -2213,7 +2255,7 @@ describe('useDropzone() hook', () => {
|
|
|
2213
2255
|
expect(dropzone).toContainElement(ref)
|
|
2214
2256
|
|
|
2215
2257
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2216
|
-
await flushPromises(
|
|
2258
|
+
await flushPromises(rerender, ui)
|
|
2217
2259
|
|
|
2218
2260
|
expect(dropzone).not.toContainElement(ref)
|
|
2219
2261
|
})
|
|
@@ -2229,11 +2271,11 @@ describe('useDropzone() hook', () => {
|
|
|
2229
2271
|
)}
|
|
2230
2272
|
</Dropzone>
|
|
2231
2273
|
)
|
|
2232
|
-
const { container } = render(ui)
|
|
2274
|
+
const { container, rerender } = render(ui)
|
|
2233
2275
|
const dropzone = container.querySelector('div')
|
|
2234
2276
|
|
|
2235
2277
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2236
|
-
await flushPromises(
|
|
2278
|
+
await flushPromises(rerender, ui)
|
|
2237
2279
|
expect(onDropSpy).toHaveBeenCalledWith([], [
|
|
2238
2280
|
{
|
|
2239
2281
|
file: files[0],
|
|
@@ -2248,12 +2290,12 @@ describe('useDropzone() hook', () => {
|
|
|
2248
2290
|
onDropSpy.mockClear()
|
|
2249
2291
|
|
|
2250
2292
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2251
|
-
await flushPromises(
|
|
2293
|
+
await flushPromises(rerender, ui)
|
|
2252
2294
|
expect(onDropSpy).toHaveBeenCalledWith(images, [], expect.anything())
|
|
2253
2295
|
onDropSpy.mockClear()
|
|
2254
2296
|
|
|
2255
2297
|
fireDrop(dropzone, createDtWithFiles([...files, ...images]))
|
|
2256
|
-
await flushPromises(
|
|
2298
|
+
await flushPromises(rerender, ui)
|
|
2257
2299
|
expect(onDropSpy).toHaveBeenCalledWith(images, [
|
|
2258
2300
|
{
|
|
2259
2301
|
file: files[0],
|
|
@@ -2278,21 +2320,21 @@ describe('useDropzone() hook', () => {
|
|
|
2278
2320
|
)}
|
|
2279
2321
|
</Dropzone>
|
|
2280
2322
|
)
|
|
2281
|
-
const { container } = render(ui)
|
|
2323
|
+
const { container, rerender } = render(ui)
|
|
2282
2324
|
const dropzone = container.querySelector('div')
|
|
2283
2325
|
|
|
2284
2326
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2285
|
-
await flushPromises(
|
|
2327
|
+
await flushPromises(rerender, ui)
|
|
2286
2328
|
expect(onDropAcceptedSpy).not.toHaveBeenCalled()
|
|
2287
2329
|
onDropAcceptedSpy.mockClear()
|
|
2288
2330
|
|
|
2289
2331
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2290
|
-
await flushPromises(
|
|
2332
|
+
await flushPromises(rerender, ui)
|
|
2291
2333
|
expect(onDropAcceptedSpy).toHaveBeenCalledWith(images, expect.anything())
|
|
2292
2334
|
onDropAcceptedSpy.mockClear()
|
|
2293
2335
|
|
|
2294
2336
|
fireDrop(dropzone, createDtWithFiles([...files, ...images]))
|
|
2295
|
-
await flushPromises(
|
|
2337
|
+
await flushPromises(rerender, ui)
|
|
2296
2338
|
expect(onDropAcceptedSpy).toHaveBeenCalledWith(images, expect.anything())
|
|
2297
2339
|
})
|
|
2298
2340
|
|
|
@@ -2307,11 +2349,11 @@ describe('useDropzone() hook', () => {
|
|
|
2307
2349
|
)}
|
|
2308
2350
|
</Dropzone>
|
|
2309
2351
|
)
|
|
2310
|
-
const { container } = render(ui)
|
|
2352
|
+
const { container, rerender } = render(ui)
|
|
2311
2353
|
const dropzone = container.querySelector('div')
|
|
2312
2354
|
|
|
2313
2355
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2314
|
-
await flushPromises(
|
|
2356
|
+
await flushPromises(rerender, ui)
|
|
2315
2357
|
expect(onDropRejectedSpy).toHaveBeenCalledWith([
|
|
2316
2358
|
{
|
|
2317
2359
|
file: files[0],
|
|
@@ -2326,12 +2368,12 @@ describe('useDropzone() hook', () => {
|
|
|
2326
2368
|
onDropRejectedSpy.mockClear()
|
|
2327
2369
|
|
|
2328
2370
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2329
|
-
await flushPromises(
|
|
2371
|
+
await flushPromises(rerender, ui)
|
|
2330
2372
|
expect(onDropRejectedSpy).not.toHaveBeenCalled()
|
|
2331
2373
|
onDropRejectedSpy.mockClear()
|
|
2332
2374
|
|
|
2333
2375
|
fireDrop(dropzone, createDtWithFiles([...files, ...images]))
|
|
2334
|
-
await flushPromises(
|
|
2376
|
+
await flushPromises(rerender, ui)
|
|
2335
2377
|
expect(onDropRejectedSpy).toHaveBeenCalledWith([
|
|
2336
2378
|
{
|
|
2337
2379
|
file: files[0],
|
|
@@ -2356,12 +2398,12 @@ describe('useDropzone() hook', () => {
|
|
|
2356
2398
|
)}
|
|
2357
2399
|
</Dropzone>
|
|
2358
2400
|
)
|
|
2359
|
-
const { container } = render(ui)
|
|
2401
|
+
const { container, rerender } = render(ui)
|
|
2360
2402
|
const dropzone = container.querySelector('div')
|
|
2361
2403
|
|
|
2362
2404
|
const images = [createFile('bogus.gif', 1234, 'application/x-moz-file')]
|
|
2363
2405
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2364
|
-
await flushPromises(
|
|
2406
|
+
await flushPromises(rerender, ui)
|
|
2365
2407
|
|
|
2366
2408
|
expect(onDropSpy).toHaveBeenCalledWith(images, [], expect.anything())
|
|
2367
2409
|
})
|
|
@@ -2377,11 +2419,11 @@ describe('useDropzone() hook', () => {
|
|
|
2377
2419
|
)}
|
|
2378
2420
|
</Dropzone>
|
|
2379
2421
|
)
|
|
2380
|
-
const { container } = render(ui)
|
|
2422
|
+
const { container, rerender } = render(ui)
|
|
2381
2423
|
const dropzone = container.querySelector('div')
|
|
2382
2424
|
|
|
2383
2425
|
fireDrop(dropzone, createDtWithFiles(images))
|
|
2384
|
-
await flushPromises(
|
|
2426
|
+
await flushPromises(rerender, ui)
|
|
2385
2427
|
|
|
2386
2428
|
expect(onDropSpy).toHaveBeenCalledWith([], [
|
|
2387
2429
|
{
|
|
@@ -2416,11 +2458,11 @@ describe('useDropzone() hook', () => {
|
|
|
2416
2458
|
)}
|
|
2417
2459
|
</Dropzone>
|
|
2418
2460
|
)
|
|
2419
|
-
const { container } = render(ui)
|
|
2461
|
+
const { container, rerender } = render(ui)
|
|
2420
2462
|
const dropzone = container.querySelector('div')
|
|
2421
2463
|
|
|
2422
2464
|
fireDrop(dropzone, createDtWithFiles(files))
|
|
2423
|
-
await flushPromises(
|
|
2465
|
+
await flushPromises(rerender, ui)
|
|
2424
2466
|
|
|
2425
2467
|
expect(onDropSpy).toHaveBeenCalledWith([], [
|
|
2426
2468
|
{
|
|
@@ -2459,7 +2501,7 @@ describe('useDropzone() hook', () => {
|
|
|
2459
2501
|
)
|
|
2460
2502
|
|
|
2461
2503
|
dispatchEvt(document.body, 'focus')
|
|
2462
|
-
|
|
2504
|
+
drainTimers()
|
|
2463
2505
|
|
|
2464
2506
|
expect(onFileDialogCancelSpy).not.toHaveBeenCalled()
|
|
2465
2507
|
})
|
|
@@ -2487,13 +2529,13 @@ describe('useDropzone() hook', () => {
|
|
|
2487
2529
|
const btn = container.querySelector('button')
|
|
2488
2530
|
|
|
2489
2531
|
btn.click()
|
|
2490
|
-
|
|
2532
|
+
drainTimers()
|
|
2491
2533
|
const ref = activeRef.current
|
|
2492
2534
|
expect(ref).not.toBeNull()
|
|
2493
2535
|
expect(dropzone).toContainElement(ref)
|
|
2494
2536
|
|
|
2495
2537
|
dispatchEvt(document.body, 'focus')
|
|
2496
|
-
|
|
2538
|
+
drainTimers()
|
|
2497
2539
|
|
|
2498
2540
|
expect(onFileDialogCancelSpy).toHaveBeenCalled()
|
|
2499
2541
|
expect(dropzone).not.toContainElement(ref)
|
|
@@ -2516,17 +2558,17 @@ describe('useDropzone() hook', () => {
|
|
|
2516
2558
|
|
|
2517
2559
|
const btn = container.querySelector('button')
|
|
2518
2560
|
btn.click()
|
|
2519
|
-
|
|
2561
|
+
drainTimers()
|
|
2520
2562
|
|
|
2521
2563
|
rerender(
|
|
2522
2564
|
<Dropzone onFileDialogCancel={onFileDialogCancelSpy}>
|
|
2523
2565
|
{({ getRootProps }) => <div {...getRootProps()} />}
|
|
2524
2566
|
</Dropzone>
|
|
2525
2567
|
)
|
|
2526
|
-
|
|
2568
|
+
drainTimers()
|
|
2527
2569
|
|
|
2528
2570
|
dispatchEvt(document.body, 'focus')
|
|
2529
|
-
|
|
2571
|
+
drainTimers()
|
|
2530
2572
|
|
|
2531
2573
|
expect(onFileDialogCancelSpy).not.toHaveBeenCalled()
|
|
2532
2574
|
})
|
|
@@ -2552,10 +2594,10 @@ describe('useDropzone() hook', () => {
|
|
|
2552
2594
|
|
|
2553
2595
|
const btn = container.querySelector('button')
|
|
2554
2596
|
btn.click()
|
|
2555
|
-
|
|
2597
|
+
drainTimers()
|
|
2556
2598
|
|
|
2557
2599
|
dispatchEvt(document.body, 'focus')
|
|
2558
|
-
|
|
2600
|
+
drainTimers()
|
|
2559
2601
|
|
|
2560
2602
|
expect(onFileDialogCancelSpy).not.toHaveBeenCalled()
|
|
2561
2603
|
})
|
|
@@ -2576,11 +2618,11 @@ describe('useDropzone() hook', () => {
|
|
|
2576
2618
|
|
|
2577
2619
|
const btn = container.querySelector('button')
|
|
2578
2620
|
btn.click()
|
|
2579
|
-
|
|
2621
|
+
drainTimers()
|
|
2580
2622
|
|
|
2581
2623
|
const fn = () => {
|
|
2582
2624
|
dispatchEvt(document.body, 'focus')
|
|
2583
|
-
|
|
2625
|
+
drainTimers()
|
|
2584
2626
|
}
|
|
2585
2627
|
expect(fn).not.toThrow()
|
|
2586
2628
|
})
|
|
@@ -2679,13 +2721,12 @@ describe('useDropzone() hook', () => {
|
|
|
2679
2721
|
})
|
|
2680
2722
|
})
|
|
2681
2723
|
|
|
2682
|
-
function flushPromises(
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
)
|
|
2724
|
+
async function flushPromises(rerender, ui) {
|
|
2725
|
+
await act(() => waitFor(() => rerender(ui)))
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2728
|
+
function drainTimers() {
|
|
2729
|
+
act(() => jest.runAllTimers())
|
|
2689
2730
|
}
|
|
2690
2731
|
|
|
2691
2732
|
function createDtWithFiles(files = []) {
|