|
10 | 10 | 'use strict';
|
11 | 11 |
|
12 | 12 | const React = require('react');
|
13 |
| -const ReactDOM = require('react-dom'); |
| 13 | +const ReactDOMClient = require('react-dom/client'); |
| 14 | + |
| 15 | +const act = require('internal-test-utils').act; |
14 | 16 |
|
15 | 17 | describe('dangerouslySetInnerHTML', () => {
|
16 | 18 | describe('when the node has innerHTML property', () => {
|
17 |
| - it('sets innerHTML on it', () => { |
| 19 | + it('sets innerHTML on it', async () => { |
18 | 20 | const container = document.createElement('div');
|
19 |
| - const node = ReactDOM.render( |
20 |
| - <div dangerouslySetInnerHTML={{__html: '<h1>Hello</h1>'}} />, |
21 |
| - container, |
22 |
| - ); |
23 |
| - expect(node.innerHTML).toBe('<h1>Hello</h1>'); |
| 21 | + const root = ReactDOMClient.createRoot(container); |
| 22 | + await act(() => { |
| 23 | + root.render( |
| 24 | + <div dangerouslySetInnerHTML={{__html: '<h1>Hello</h1>'}} />, |
| 25 | + ); |
| 26 | + }); |
| 27 | + expect(container.firstChild.innerHTML).toBe('<h1>Hello</h1>'); |
24 | 28 | });
|
25 | 29 | });
|
26 | 30 |
|
@@ -56,39 +60,38 @@ describe('dangerouslySetInnerHTML', () => {
|
56 | 60 | });
|
57 | 61 |
|
58 | 62 | // @gate !disableIEWorkarounds
|
59 |
| - it('sets innerHTML on it', () => { |
| 63 | + it('sets innerHTML on it', async () => { |
60 | 64 | const html = '<circle></circle>';
|
61 | 65 | const container = document.createElementNS(
|
62 | 66 | 'http://www.w3.org/2000/svg',
|
63 | 67 | 'svg',
|
64 | 68 | );
|
65 |
| - ReactDOM.render( |
66 |
| - <g dangerouslySetInnerHTML={{__html: html}} />, |
67 |
| - container, |
68 |
| - ); |
| 69 | + const root = ReactDOMClient.createRoot(container); |
| 70 | + await act(() => { |
| 71 | + root.render(<g dangerouslySetInnerHTML={{__html: html}} />); |
| 72 | + }); |
69 | 73 | const circle = container.firstChild.firstChild;
|
70 | 74 | expect(circle.tagName).toBe('circle');
|
71 | 75 | });
|
72 | 76 |
|
73 | 77 | // @gate !disableIEWorkarounds
|
74 |
| - it('clears previous children', () => { |
| 78 | + it('clears previous children', async () => { |
75 | 79 | const firstHtml = '<rect></rect>';
|
76 | 80 | const secondHtml = '<circle></circle>';
|
77 | 81 |
|
78 | 82 | const container = document.createElementNS(
|
79 | 83 | 'http://www.w3.org/2000/svg',
|
80 | 84 | 'svg',
|
81 | 85 | );
|
82 |
| - ReactDOM.render( |
83 |
| - <g dangerouslySetInnerHTML={{__html: firstHtml}} />, |
84 |
| - container, |
85 |
| - ); |
| 86 | + const root = ReactDOMClient.createRoot(container); |
| 87 | + await act(() => { |
| 88 | + root.render(<g dangerouslySetInnerHTML={{__html: firstHtml}} />); |
| 89 | + }); |
86 | 90 | const rect = container.firstChild.firstChild;
|
87 | 91 | expect(rect.tagName).toBe('rect');
|
88 |
| - ReactDOM.render( |
89 |
| - <g dangerouslySetInnerHTML={{__html: secondHtml}} />, |
90 |
| - container, |
91 |
| - ); |
| 92 | + await act(() => { |
| 93 | + root.render(<g dangerouslySetInnerHTML={{__html: secondHtml}} />); |
| 94 | + }); |
92 | 95 | const circle = container.firstChild.firstChild;
|
93 | 96 | expect(circle.tagName).toBe('circle');
|
94 | 97 | });
|
|
0 commit comments