@@ -48,9 +48,9 @@ ruleTester.run('no-deprecated', rule, {
4848    // Not deprecated 
4949    'var element = React.createElement(\'p\', {}, null);' , 
5050    'var clone = React.cloneElement(element);' , 
51-     'ReactDOM.render(element, container);' , 
52-     'ReactDOM.unmountComponentAtNode(container);' , 
51+     'ReactDOM.cloneElement(child, container);' , 
5352    'ReactDOM.findDOMNode(instance);' , 
53+     'ReactDOM.createPortal(child, container);' , 
5454    'ReactDOMServer.renderToString(element);' , 
5555    'ReactDOMServer.renderToStaticMarkup(element);' , 
5656    { 
@@ -119,6 +119,40 @@ ruleTester.run('no-deprecated', rule, {
119119        let { default: defaultReactExport, ...allReactExports } = React; 
120120      ` , 
121121    } , 
122+     // React < 18 
123+     { 
124+       code : ` 
125+         import { render, hydrate } from 'react-dom'; 
126+         import { renderToNodeStream } from 'react-dom/server'; 
127+         ReactDOM.render(element, container); 
128+         ReactDOM.unmountComponentAtNode(container); 
129+         ReactDOMServer.renderToNodeStream(element); 
130+       ` , 
131+       settings : {  react : {  version : '17.999.999'  }  } , 
132+     } , 
133+     // React 18 API 
134+     { 
135+       code : ` 
136+         import ReactDOM, { createRoot } from 'react-dom/client'; 
137+         ReactDOM.createRoot(container); 
138+         const root = createRoot(container); 
139+         root.unmount(); 
140+       ` , 
141+     } , 
142+     { 
143+       code : ` 
144+         import ReactDOM, { hydrateRoot } from 'react-dom/client'; 
145+         ReactDOM.hydrateRoot(container, <App/>); 
146+         hydrateRoot(container, <App/>); 
147+       ` , 
148+     } , 
149+     { 
150+       code : ` 
151+         import ReactDOMServer, { renderToPipeableStream } from 'react-dom/server'; 
152+         ReactDOMServer.renderToPipeableStream(<App />, {}); 
153+         renderToPipeableStream(<App />, {}); 
154+       ` , 
155+     } , 
122156  ] ) , 
123157
124158  invalid : parsers . all ( [ 
@@ -454,5 +488,93 @@ ruleTester.run('no-deprecated', rule, {
454488        ) , 
455489      ] , 
456490    } , 
491+     { 
492+       code : ` 
493+         import { render } from 'react-dom'; 
494+         ReactDOM.render(<div></div>, container); 
495+       ` , 
496+       errors : [ 
497+         errorMessage ( 
498+           'ReactDOM.render' , 
499+           '18.0.0' , 
500+           'createRoot' , 
501+           'https://reactjs.org/link/switch-to-createroot' , 
502+           {  type : 'ImportDeclaration' ,  line : 2 ,  column : 9  } 
503+         ) , 
504+         errorMessage ( 
505+           'ReactDOM.render' , 
506+           '18.0.0' , 
507+           'createRoot' , 
508+           'https://reactjs.org/link/switch-to-createroot' , 
509+           {  type : 'MemberExpression' ,  line : 3 ,  column : 9  } 
510+         ) , 
511+       ] , 
512+     } , 
513+     { 
514+       code : ` 
515+         import { hydrate } from 'react-dom'; 
516+         ReactDOM.hydrate(<div></div>, container); 
517+       ` , 
518+       errors : [ 
519+         errorMessage ( 
520+           'ReactDOM.hydrate' , 
521+           '18.0.0' , 
522+           'hydrateRoot' , 
523+           'https://reactjs.org/link/switch-to-createroot' , 
524+           {  type : 'ImportDeclaration' ,  line : 2 ,  column : 9  } 
525+         ) , 
526+         errorMessage ( 
527+           'ReactDOM.hydrate' , 
528+           '18.0.0' , 
529+           'hydrateRoot' , 
530+           'https://reactjs.org/link/switch-to-createroot' , 
531+           {  type : 'MemberExpression' ,  line : 3 ,  column : 9  } 
532+         ) , 
533+       ] , 
534+     } , 
535+     { 
536+       code : ` 
537+         import { unmountComponentAtNode } from 'react-dom'; 
538+         ReactDOM.unmountComponentAtNode(container); 
539+       ` , 
540+       errors : [ 
541+         errorMessage ( 
542+           'ReactDOM.unmountComponentAtNode' , 
543+           '18.0.0' , 
544+           'root.unmount' , 
545+           'https://reactjs.org/link/switch-to-createroot' , 
546+           {  type : 'ImportDeclaration' ,  line : 2 ,  column : 9  } 
547+         ) , 
548+         errorMessage ( 
549+           'ReactDOM.unmountComponentAtNode' , 
550+           '18.0.0' , 
551+           'root.unmount' , 
552+           'https://reactjs.org/link/switch-to-createroot' , 
553+           {  type : 'MemberExpression' ,  line : 3 ,  column : 9  } 
554+         ) , 
555+       ] , 
556+     } , 
557+     { 
558+       code : ` 
559+         import { renderToNodeStream } from 'react-dom/server'; 
560+         ReactDOMServer.renderToNodeStream(element); 
561+       ` , 
562+       errors : [ 
563+         errorMessage ( 
564+           'ReactDOMServer.renderToNodeStream' , 
565+           '18.0.0' , 
566+           'renderToPipeableStream' , 
567+           'https://reactjs.org/docs/react-dom-server.html#rendertonodestream' , 
568+           {  type : 'ImportDeclaration' ,  line : 2 ,  column : 9  } 
569+         ) , 
570+         errorMessage ( 
571+           'ReactDOMServer.renderToNodeStream' , 
572+           '18.0.0' , 
573+           'renderToPipeableStream' , 
574+           'https://reactjs.org/docs/react-dom-server.html#rendertonodestream' , 
575+           {  type : 'MemberExpression' ,  line : 3 ,  column : 9  } 
576+         ) , 
577+       ] , 
578+     } , 
457579  ] ) , 
458580} ) ; 
0 commit comments