10
10
'use strict' ;
11
11
12
12
let React ;
13
- let ReactDOM ;
13
+ let ReactDOMClient ;
14
+ let act ;
14
15
15
16
describe ( 'SyntheticClipboardEvent' , ( ) => {
16
17
let container ;
17
18
18
19
beforeEach ( ( ) => {
19
20
React = require ( 'react' ) ;
20
- ReactDOM = require ( 'react-dom' ) ;
21
+ ReactDOMClient = require ( 'react-dom/client' ) ;
22
+ act = require ( 'internal-test-utils' ) . act ;
21
23
22
24
// The container has to be attached for events to fire.
23
25
container = document . createElement ( 'div' ) ;
@@ -32,7 +34,7 @@ describe('SyntheticClipboardEvent', () => {
32
34
describe ( 'ClipboardEvent interface' , ( ) => {
33
35
describe ( 'clipboardData' , ( ) => {
34
36
describe ( 'when event has clipboardData' , ( ) => {
35
- it ( "returns event's clipboardData" , ( ) => {
37
+ it ( "returns event's clipboardData" , async ( ) => {
36
38
let expectedCount = 0 ;
37
39
38
40
// Mock clipboardData since jsdom implementation doesn't have a constructor
@@ -47,30 +49,39 @@ describe('SyntheticClipboardEvent', () => {
47
49
expect ( event . clipboardData ) . toBe ( clipboardData ) ;
48
50
expectedCount ++ ;
49
51
} ;
50
- const div = ReactDOM . render (
51
- < div
52
- onCopy = { eventHandler }
53
- onCut = { eventHandler }
54
- onPaste = { eventHandler }
55
- /> ,
56
- container ,
57
- ) ;
52
+ const root = ReactDOMClient . createRoot ( container ) ;
53
+ await act ( ( ) => {
54
+ root . render (
55
+ < div
56
+ onCopy = { eventHandler }
57
+ onCut = { eventHandler }
58
+ onPaste = { eventHandler }
59
+ /> ,
60
+ ) ;
61
+ } ) ;
62
+
63
+ const div = container . firstChild ;
58
64
59
65
let event ;
60
66
event = document . createEvent ( 'Event' ) ;
61
67
event . initEvent ( 'copy' , true , true ) ;
62
68
event . clipboardData = clipboardData ;
63
- div . dispatchEvent ( event ) ;
64
-
69
+ await act ( ( ) => {
70
+ div . dispatchEvent ( event ) ;
71
+ } ) ;
65
72
event = document . createEvent ( 'Event' ) ;
66
73
event . initEvent ( 'cut' , true , true ) ;
67
74
event . clipboardData = clipboardData ;
68
- div . dispatchEvent ( event ) ;
75
+ await act ( ( ) => {
76
+ div . dispatchEvent ( event ) ;
77
+ } ) ;
69
78
70
79
event = document . createEvent ( 'Event' ) ;
71
80
event . initEvent ( 'paste' , true , true ) ;
72
81
event . clipboardData = clipboardData ;
73
- div . dispatchEvent ( event ) ;
82
+ await act ( ( ) => {
83
+ div . dispatchEvent ( event ) ;
84
+ } ) ;
74
85
75
86
expect ( expectedCount ) . toBe ( 3 ) ;
76
87
} ) ;
@@ -79,7 +90,7 @@ describe('SyntheticClipboardEvent', () => {
79
90
} ) ;
80
91
81
92
describe ( 'EventInterface' , ( ) => {
82
- it ( 'is able to `preventDefault` and `stopPropagation`' , ( ) => {
93
+ it ( 'is able to `preventDefault` and `stopPropagation`' , async ( ) => {
83
94
let expectedCount = 0 ;
84
95
85
96
const eventHandler = event => {
@@ -92,14 +103,19 @@ describe('SyntheticClipboardEvent', () => {
92
103
expectedCount ++ ;
93
104
} ;
94
105
95
- const div = ReactDOM . render (
96
- < div
97
- onCopy = { eventHandler }
98
- onCut = { eventHandler }
99
- onPaste = { eventHandler }
100
- /> ,
101
- container ,
102
- ) ;
106
+ const root = ReactDOMClient . createRoot ( container ) ;
107
+
108
+ await act ( ( ) => {
109
+ root . render (
110
+ < div
111
+ onCopy = { eventHandler }
112
+ onCut = { eventHandler }
113
+ onPaste = { eventHandler }
114
+ /> ,
115
+ ) ;
116
+ } ) ;
117
+
118
+ const div = container . firstChild ;
103
119
104
120
let event ;
105
121
event = document . createEvent ( 'Event' ) ;
0 commit comments