diff --git a/src/renderers/shared/fiber/__tests__/ReactIncremental-test.js b/src/renderers/shared/fiber/__tests__/ReactIncremental-test.js index 4e31a6b77e..d4eeb88377 100644 --- a/src/renderers/shared/fiber/__tests__/ReactIncremental-test.js +++ b/src/renderers/shared/fiber/__tests__/ReactIncremental-test.js @@ -452,6 +452,47 @@ describe('ReactIncremental', () => { expect(ops).toEqual(['Foo', 'Bar', 'Bar']); }); + it('can resume mounting a class component', () => { + let ops = []; + let foo; + class Parent extends React.Component { + shouldComponentUpdate() { + return false; + } + render() { + return ; + } + } + + class Foo extends React.Component { + constructor(props) { + super(props); + // Test based on a www bug where props was null on resume + ops.push('Foo constructor: ' + props.prop); + } + render() { + foo = this; + ops.push('Foo'); + return ; + } + } + + function Bar() { + ops.push('Bar'); + return
; + } + + ReactNoop.render(); + ReactNoop.flushDeferredPri(20); + expect(ops).toEqual(['Foo constructor: foo', 'Foo']); + + foo.setState({value: 'bar'}); + + ops = []; + ReactNoop.flush(); + expect(ops).toEqual(['Foo constructor: foo', 'Foo', 'Bar']); + }); + it('can reuse work done after being preempted', () => { var ops = [];