1010'use strict' ;
1111
1212let React ;
13- let ReactDOM ;
13+ let ReactDOMClient ;
14+ let act ;
1415
1516describe ( 'SyntheticClipboardEvent' , ( ) => {
1617 let container ;
1718
1819 beforeEach ( ( ) => {
1920 React = require ( 'react' ) ;
20- ReactDOM = require ( 'react-dom' ) ;
21+ ReactDOMClient = require ( 'react-dom/client' ) ;
22+ act = require ( 'internal-test-utils' ) . act ;
2123
2224 // The container has to be attached for events to fire.
2325 container = document . createElement ( 'div' ) ;
@@ -32,7 +34,7 @@ describe('SyntheticClipboardEvent', () => {
3234 describe ( 'ClipboardEvent interface' , ( ) => {
3335 describe ( 'clipboardData' , ( ) => {
3436 describe ( 'when event has clipboardData' , ( ) => {
35- it ( "returns event's clipboardData" , ( ) => {
37+ it ( "returns event's clipboardData" , async ( ) => {
3638 let expectedCount = 0 ;
3739
3840 // Mock clipboardData since jsdom implementation doesn't have a constructor
@@ -47,30 +49,39 @@ describe('SyntheticClipboardEvent', () => {
4749 expect ( event . clipboardData ) . toBe ( clipboardData ) ;
4850 expectedCount ++ ;
4951 } ;
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 ;
5864
5965 let event ;
6066 event = document . createEvent ( 'Event' ) ;
6167 event . initEvent ( 'copy' , true , true ) ;
6268 event . clipboardData = clipboardData ;
63- div . dispatchEvent ( event ) ;
64-
69+ await act ( ( ) => {
70+ div . dispatchEvent ( event ) ;
71+ } ) ;
6572 event = document . createEvent ( 'Event' ) ;
6673 event . initEvent ( 'cut' , true , true ) ;
6774 event . clipboardData = clipboardData ;
68- div . dispatchEvent ( event ) ;
75+ await act ( ( ) => {
76+ div . dispatchEvent ( event ) ;
77+ } ) ;
6978
7079 event = document . createEvent ( 'Event' ) ;
7180 event . initEvent ( 'paste' , true , true ) ;
7281 event . clipboardData = clipboardData ;
73- div . dispatchEvent ( event ) ;
82+ await act ( ( ) => {
83+ div . dispatchEvent ( event ) ;
84+ } ) ;
7485
7586 expect ( expectedCount ) . toBe ( 3 ) ;
7687 } ) ;
@@ -79,7 +90,7 @@ describe('SyntheticClipboardEvent', () => {
7990 } ) ;
8091
8192 describe ( 'EventInterface' , ( ) => {
82- it ( 'is able to `preventDefault` and `stopPropagation`' , ( ) => {
93+ it ( 'is able to `preventDefault` and `stopPropagation`' , async ( ) => {
8394 let expectedCount = 0 ;
8495
8596 const eventHandler = event => {
@@ -92,14 +103,19 @@ describe('SyntheticClipboardEvent', () => {
92103 expectedCount ++ ;
93104 } ;
94105
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 ;
103119
104120 let event ;
105121 event = document . createEvent ( 'Event' ) ;
0 commit comments