@samitouri / QOS-React-2 / commits / bd8ecc1caa
Fork 0

The library for web and native user interfaces.

Restore @spicyj's lifecycle tests

These got lost in a rebase.

CommitSyncScript committed Jun 24, 2013 at 18:27 UTC bd8ecc1caa59dba79d79a126343a666ef4513582
1 file changed +64
src/core/__tests__/ReactComponentLifeCycle-test.js
+64
@@ -434,5 +434,69 @@ describe('ReactComponentLifeCycle', function() {
434 expect(instance.state.stateField).toBe('goodbye');
435 });
436
437 + it('should call nested lifecycle methods in the right order', function() {
438 + var log;
439 + var logger = function(msg) {
440 + return function() {
441 + // return true for shouldComponentUpdate
442 + log.push(msg);
443 + return true;
444 + };
445 + };
446 + var Outer = React.createClass({
447 + render: function() {
448 + return <div><Inner x={this.props.x} /></div>;
449 + },
450 + componentWillMount: logger('outer componentWillMount'),
451 + componentDidMount: logger('outer componentDidMount'),
452 + componentWillReceiveProps: logger('outer componentWillReceiveProps'),
453 + shouldComponentUpdate: logger('outer shouldComponentUpdate'),
454 + componentWillUpdate: logger('outer componentWillUpdate'),
455 + componentDidUpdate: logger('outer componentDidUpdate'),
456 + componentWillUnmount: logger('outer componentWillUnmount')
457 + });
458 + var Inner = React.createClass({
459 + render: function() {
460 + return <span>{this.props.x}</span>;
461 + },
462 + componentWillMount: logger('inner componentWillMount'),
463 + componentDidMount: logger('inner componentDidMount'),
464 + componentWillReceiveProps: logger('inner componentWillReceiveProps'),
465 + shouldComponentUpdate: logger('inner shouldComponentUpdate'),
466 + componentWillUpdate: logger('inner componentWillUpdate'),
467 + componentDidUpdate: logger('inner componentDidUpdate'),
468 + componentWillUnmount: logger('inner componentWillUnmount')
469 + });
470 + var instance;
471 +
472 + log = [];
473 + instance = ReactTestUtils.renderIntoDocument(<Outer x={17} />);
474 + expect(log).toEqual([
475 + 'outer componentWillMount',
476 + 'inner componentWillMount',
477 + 'inner componentDidMount',
478 + 'outer componentDidMount'
479 + ]);
480 +
481 + log = [];
482 + instance.setProps({x: 42});
483 + expect(log).toEqual([
484 + 'outer componentWillReceiveProps',
485 + 'outer shouldComponentUpdate',
486 + 'outer componentWillUpdate',
487 + 'inner componentWillReceiveProps',
488 + 'inner shouldComponentUpdate',
489 + 'inner componentWillUpdate',
490 + 'inner componentDidUpdate',
491 + 'outer componentDidUpdate'
492 + ]);
493 +
494 + log = [];
495 + instance.unmountComponent();
496 + expect(log).toEqual([
497 + 'outer componentWillUnmount',
498 + 'inner componentWillUnmount'
499 + ]);
500 + });
501 });
502