@@ -17,6 +17,11 @@ const {format: prettyFormat} = require('pretty-format');
1717const InternalTestUtils = require ( 'internal-test-utils' ) ;
1818const waitForAll = InternalTestUtils . waitForAll ;
1919const act = InternalTestUtils . act ;
20+ const Reconciler = require ( 'react-reconciler/src/ReactFiberReconciler' ) ;
21+ const {
22+ ConcurrentRoot,
23+ LegacyRoot,
24+ } = require ( 'react-reconciler/src/ReactRootTags' ) ;
2025
2126// Isolate noop renderer
2227jest . resetModules ( ) ;
@@ -65,6 +70,53 @@ describe('ReactTestRenderer', () => {
6570 ) ;
6671 } ) ;
6772
73+ describe ( 'root tags' , ( ) => {
74+ let createContainerSpy ;
75+ beforeEach ( ( ) => {
76+ createContainerSpy = jest . spyOn ( Reconciler , 'createContainer' ) ;
77+ } ) ;
78+
79+ function expectTag ( tag ) {
80+ expect ( createContainerSpy ) . toHaveBeenCalledWith (
81+ expect . anything ( ) ,
82+ tag ,
83+ null ,
84+ expect . anything ( ) ,
85+ null ,
86+ expect . anything ( ) ,
87+ expect . anything ( ) ,
88+ null ,
89+ ) ;
90+ }
91+
92+ // @gate disableLegacyMode
93+ it ( 'should render using concurrent root if disableLegacyMode' , ( ) => {
94+ ReactTestRenderer . create ( < div /> ) ;
95+ expectTag ( ConcurrentRoot ) ;
96+ } ) ;
97+
98+ // @gate !disableLegacyMode
99+ it ( 'should default to legacy root if not disableLegacyMode' , ( ) => {
100+ ReactTestRenderer . create ( < div /> ) ;
101+ expectTag ( LegacyRoot ) ;
102+ } ) ;
103+
104+ it ( 'should allow unstable_isConcurrent if not disableLegacyMode' , async ( ) => {
105+ ReactTestRenderer . create ( < div /> , {
106+ unstable_isConcurrent : true ,
107+ } ) ;
108+ ReactTestRenderer . create ( < div /> ) ;
109+ expectTag ( ConcurrentRoot ) ;
110+ } ) ;
111+
112+ it ( 'should render legacy root when RN test environment' , async ( ) => {
113+ global . IS_REACT_NATIVE_TEST_ENVIRONMENT = true ;
114+ ReactTestRenderer . create ( < div /> ) ;
115+ expectTag ( LegacyRoot ) ;
116+ global . IS_REACT_NATIVE_TEST_ENVIRONMENT = false ;
117+ } ) ;
118+ } ) ;
119+
68120 it ( 'renders a simple component' , async ( ) => {
69121 function Link ( ) {
70122 return < a role = "link" /> ;
0 commit comments