@@ -450,6 +450,52 @@ describe('ReactShallowRenderer', () => {
450
450
expect ( result ) . toEqual ( < div > doovy</ div > ) ;
451
451
} ) ;
452
452
453
+ it ( 'can setState in componentWillMount repeatedly when shallow rendering' , ( ) => {
454
+ class SimpleComponent extends React . Component {
455
+ state = {
456
+ separator : '-' ,
457
+ } ;
458
+
459
+ componentWillMount ( ) {
460
+ this . setState ( { groovy : 'doovy' } ) ;
461
+ this . setState ( { doovy : 'groovy' } ) ;
462
+ }
463
+
464
+ render ( ) {
465
+ const { groovy, doovy, separator} = this . state ;
466
+
467
+ return < div > { `${ groovy } ${ separator } ${ doovy } ` } </ div > ;
468
+ }
469
+ }
470
+
471
+ const shallowRenderer = createRenderer ( ) ;
472
+ const result = shallowRenderer . render ( < SimpleComponent /> ) ;
473
+ expect ( result ) . toEqual ( < div > doovy-groovy</ div > ) ;
474
+ } ) ;
475
+
476
+ it ( 'can setState in componentWillMount with an updater function repeatedly when shallow rendering' , ( ) => {
477
+ class SimpleComponent extends React . Component {
478
+ state = {
479
+ separator : '-' ,
480
+ } ;
481
+
482
+ componentWillMount ( ) {
483
+ this . setState ( state => ( { groovy : 'doovy' } ) ) ;
484
+ this . setState ( state => ( { doovy : state . groovy } ) ) ;
485
+ }
486
+
487
+ render ( ) {
488
+ const { groovy, doovy, separator} = this . state ;
489
+
490
+ return < div > { `${ groovy } ${ separator } ${ doovy } ` } </ div > ;
491
+ }
492
+ }
493
+
494
+ const shallowRenderer = createRenderer ( ) ;
495
+ const result = shallowRenderer . render ( < SimpleComponent /> ) ;
496
+ expect ( result ) . toEqual ( < div > doovy-doovy</ div > ) ;
497
+ } ) ;
498
+
453
499
it ( 'can setState in componentWillReceiveProps when shallow rendering' , ( ) => {
454
500
class SimpleComponent extends React . Component {
455
501
state = { count : 0 } ;
0 commit comments