@@ -81,3 +81,40 @@ test('rerenders the component with updated props and resets other props', async
81
81
} ,
82
82
} ) ;
83
83
} ) ;
84
+
85
+ describe ( 'detectChangesOnRender' , ( ) => {
86
+ test ( 'change detection gets not called if disabled within render' , async ( ) => {
87
+ const { rerender, detectChanges } = await render ( FixtureComponent , { detectChangesOnRender : false } ) ;
88
+ detectChanges ( ) ;
89
+ expect ( screen . getByText ( 'Sarah' ) ) . toBeInTheDocument ( ) ;
90
+
91
+ const firstName = 'Mark' ;
92
+ await rerender ( { componentInputs : { firstName } } ) ;
93
+
94
+ expect ( screen . getByText ( 'Sarah' ) ) . toBeInTheDocument ( ) ;
95
+ expect ( screen . queryByText ( firstName ) ) . not . toBeInTheDocument ( ) ;
96
+ } ) ;
97
+
98
+ test ( 'change detection gets called if disabled within render but enabled within rerender' , async ( ) => {
99
+ const { rerender, detectChanges } = await render ( FixtureComponent , { detectChangesOnRender : false } ) ;
100
+ detectChanges ( ) ;
101
+ expect ( screen . getByText ( 'Sarah' ) ) . toBeInTheDocument ( ) ;
102
+
103
+ const firstName = 'Mark' ;
104
+ await rerender ( { componentInputs : { firstName } , detectChangesOnRender : true } ) ;
105
+
106
+ expect ( screen . getByText ( firstName ) ) . toBeInTheDocument ( ) ;
107
+ expect ( screen . queryByText ( 'Sarah' ) ) . not . toBeInTheDocument ( ) ;
108
+ } ) ;
109
+
110
+ test ( 'change detection gets not called if disabled within rerender' , async ( ) => {
111
+ const { rerender } = await render ( FixtureComponent ) ;
112
+ expect ( screen . getByText ( 'Sarah' ) ) . toBeInTheDocument ( ) ;
113
+
114
+ const firstName = 'Mark' ;
115
+ await rerender ( { componentInputs : { firstName } , detectChangesOnRender : false } ) ;
116
+
117
+ expect ( screen . getByText ( 'Sarah' ) ) . toBeInTheDocument ( ) ;
118
+ expect ( screen . queryByText ( firstName ) ) . not . toBeInTheDocument ( ) ;
119
+ } ) ;
120
+ } ) ;
0 commit comments