Skip to content

Commit d00dd26

Browse files
eps1lonAndyPengc12
authored andcommitted
Convert useFocusWithin to createRoot (facebook#28128)
1 parent eb5882b commit d00dd26

File tree

1 file changed

+47
-26
lines changed

1 file changed

+47
-26
lines changed

packages/react-interactions/events/src/dom/create-event-handle/__tests__/useFocusWithin-test.internal.js

+47-26
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {createEventTarget, setPointerEvent} from 'dom-event-testing-library';
1313

1414
let React;
1515
let ReactFeatureFlags;
16-
let ReactDOM;
1716
let ReactDOMClient;
1817
let useFocusWithin;
1918
let act;
@@ -25,7 +24,6 @@ function initializeModules(hasPointerEvents) {
2524
ReactFeatureFlags.enableScopeAPI = true;
2625
ReactFeatureFlags.enableCreateEventHandleAPI = true;
2726
React = require('react');
28-
ReactDOM = require('react-dom');
2927
ReactDOMClient = require('react-dom/client');
3028
act = require('internal-test-utils').act;
3129

@@ -42,17 +40,22 @@ const table = [[forcePointerEvents], [!forcePointerEvents]];
4240
describe.each(table)(`useFocus`, hasPointerEvents => {
4341
let container;
4442
let container2;
43+
let root;
4544

4645
beforeEach(() => {
4746
initializeModules(hasPointerEvents);
4847
container = document.createElement('div');
4948
document.body.appendChild(container);
5049
container2 = document.createElement('div');
5150
document.body.appendChild(container2);
51+
root = ReactDOMClient.createRoot(container);
5252
});
5353

54-
afterEach(() => {
55-
ReactDOM.render(null, container);
54+
afterEach(async () => {
55+
await act(() => {
56+
root.render(null);
57+
});
58+
5659
document.body.removeChild(container);
5760
document.body.removeChild(container2);
5861
container = null;
@@ -75,7 +78,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
7578
return <div ref={focusWithinRef} />;
7679
};
7780
await act(() => {
78-
ReactDOM.render(<Component />, container);
81+
root.render(<Component />);
7982
});
8083
};
8184

@@ -111,7 +114,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
111114
innerRef = React.createRef();
112115
innerRef2 = React.createRef();
113116
await act(() => {
114-
ReactDOM.render(<Component show={true} />, container);
117+
root.render(<Component show={true} />);
115118
});
116119
};
117120

@@ -188,7 +191,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
188191
innerRef = React.createRef();
189192
innerRef2 = React.createRef();
190193
await act(() => {
191-
ReactDOM.render(<Component show={true} />, container);
194+
root.render(<Component show={true} />);
192195
});
193196
};
194197

@@ -314,7 +317,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
314317
);
315318
};
316319
await act(() => {
317-
ReactDOM.render(<Component />, container);
320+
root.render(<Component />);
318321
});
319322

320323
const target = createEventTarget(inputRef.current);
@@ -354,7 +357,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
354357
};
355358

356359
await act(() => {
357-
ReactDOM.render(<Component show={true} />, container);
360+
root.render(<Component show={true} />);
358361
});
359362

360363
const inner = innerRef.current;
@@ -363,7 +366,10 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
363366
target.focus();
364367
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(0);
365368
expect(onAfterBlurWithin).toHaveBeenCalledTimes(0);
366-
ReactDOM.render(<Component show={false} />, container);
369+
await act(() => {
370+
root.render(<Component show={false} />);
371+
});
372+
367373
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(1);
368374
expect(onAfterBlurWithin).toHaveBeenCalledTimes(1);
369375
expect(onAfterBlurWithin).toHaveBeenCalledWith(
@@ -391,7 +397,7 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
391397
};
392398

393399
await act(() => {
394-
ReactDOM.render(<Component show={true} />, container);
400+
root.render(<Component show={true} />);
395401
});
396402

397403
const inner = innerRef.current;
@@ -400,7 +406,11 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
400406
target.focus();
401407
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(0);
402408
expect(onAfterBlurWithin).toHaveBeenCalledTimes(0);
403-
ReactDOM.render(<Component show={false} />, container);
409+
410+
await act(() => {
411+
root.render(<Component show={false} />);
412+
});
413+
404414
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(1);
405415
expect(onAfterBlurWithin).toHaveBeenCalledTimes(1);
406416
expect(onAfterBlurWithin).toHaveBeenCalledWith(
@@ -433,13 +443,16 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
433443
};
434444

435445
await act(() => {
436-
ReactDOM.render(<Component show={true} />, container);
446+
root.render(<Component show={true} />);
437447
});
438448

439449
inputRef.current.focus();
440450
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(0);
441451
expect(onAfterBlurWithin).toHaveBeenCalledTimes(0);
442-
ReactDOM.render(<Component show={false} />, container);
452+
await act(() => {
453+
root.render(<Component show={false} />);
454+
});
455+
443456
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(1);
444457
expect(onAfterBlurWithin).toHaveBeenCalledTimes(1);
445458
});
@@ -469,15 +482,15 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
469482
};
470483

471484
await act(() => {
472-
ReactDOM.render(<Component show={true} />, container);
485+
root.render(<Component show={true} />);
473486
});
474487

475488
const inner = innerRef.current;
476489
const target = createEventTarget(inner);
477490
target.keydown({key: 'Tab'});
478491
target.focus();
479492
await act(() => {
480-
ReactDOM.render(<Component show={false} />, container);
493+
root.render(<Component show={false} />);
481494
});
482495
expect(targetNodes).toEqual([targetNode]);
483496
});
@@ -512,10 +525,10 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
512525
);
513526
};
514527

515-
const root = ReactDOMClient.createRoot(container2);
528+
const root2 = ReactDOMClient.createRoot(container2);
516529

517530
await act(() => {
518-
root.render(<Component />);
531+
root2.render(<Component />);
519532
});
520533
expect(container2.innerHTML).toBe('<div><input></div>');
521534

@@ -528,14 +541,18 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
528541

529542
suspend = true;
530543
await act(() => {
531-
root.render(<Component />);
544+
root2.render(<Component />);
532545
});
533546
expect(container2.innerHTML).toBe(
534547
'<div><input style="display: none;">Loading...</div>',
535548
);
536549
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(1);
537550
expect(onAfterBlurWithin).toHaveBeenCalledTimes(1);
538-
resolve();
551+
await act(() => {
552+
suspend = false;
553+
resolve();
554+
});
555+
expect(container2.innerHTML).toBe('<div><input style=""></div>');
539556
});
540557

541558
// @gate www
@@ -569,37 +586,41 @@ describe.each(table)(`useFocus`, hasPointerEvents => {
569586
);
570587
};
571588

572-
const root = ReactDOMClient.createRoot(container2);
589+
const root2 = ReactDOMClient.createRoot(container2);
573590

574591
await act(() => {
575-
root.render(<Component />);
592+
root2.render(<Component />);
576593
});
577594

578595
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(0);
579596
expect(onAfterBlurWithin).toHaveBeenCalledTimes(0);
580597

581598
suspend = true;
582599
await act(() => {
583-
root.render(<Component />);
600+
root2.render(<Component />);
584601
});
585602
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(0);
586603
expect(onAfterBlurWithin).toHaveBeenCalledTimes(0);
587604

588605
await act(() => {
589-
root.render(<Component />);
606+
root2.render(<Component />);
590607
});
591608
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(0);
592609
expect(onAfterBlurWithin).toHaveBeenCalledTimes(0);
593610

594611
buttonRef.current.focus();
595612
suspend = false;
596613
await act(() => {
597-
root.render(<Component />);
614+
root2.render(<Component />);
598615
});
599616
expect(onBeforeBlurWithin).toHaveBeenCalledTimes(1);
600617
expect(onAfterBlurWithin).toHaveBeenCalledTimes(1);
601618

602-
resolve();
619+
await act(() => {
620+
suspend = false;
621+
resolve();
622+
});
623+
expect(container2.innerHTML).toBe('<div><input style=""></div>');
603624
});
604625
});
605626
});

0 commit comments

Comments
 (0)