123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import PropTypes from '../../lib/ReactPropTypes';
- import ReactTestUtils from "../../lib/ReactTestUtils";
- import React from '../../src/May';
- import { render, unmountComponentAtNode, findDOMNode } from '../../src/may-dom/MayDom';
- import {shallowCompare} from '../../src/PureComponent';
- var ReactDOM = {
- render: render,
- unmountComponentAtNode: unmountComponentAtNode,
- findDOMNode: findDOMNode
- }
- React.render = render;
- // import React from "../../dist/ReactANU";
- // var ReactDOM = React;
- // var ReactTestUtils = {
- // renderIntoDocument: function (element) {
- // var div = document.createElement("div");
- // return React.render(element, div);
- // }
- // };
- //https://github.com/facebook/react/blob/master/src/isomorphic/children/__tests__/ReactChildren-test.js
- describe("ReactComponent", function() {
- // this.timeout(200000);
- it("should not produce child DOM nodes for null and false", function() {
- class Component1 extends React.Component {
- render() {
- return null;
- }
- }
- class Component2 extends React.Component {
- render() {
- return false;
- }
- }
- var container1 = document.createElement("div");
- ReactDOM.render(<Component1 />, container1);
- expect(container1.children.length).toBe(0);
- var container2 = document.createElement("div");
- ReactDOM.render(<Component2 />, container2);
- expect(container2.children.length).toBe(0);
- });
- it("works when switching components", () => {
- var assertions = 0;
- class Inner extends React.Component {
- render() {
- return <span />;
- }
- componentDidMount() {
- // Make sure the DOM node resolves properly even if we're replacing a
- // `null` component
- expect(ReactDOM.findDOMNode(this)).not.toBe(null);
- assertions++;
- }
- componentWillUnmount() {
- // Even though we're getting replaced by `null`, we haven't been
- // replaced yet!
- expect(ReactDOM.findDOMNode(this)).not.toBe(null);
- assertions++;
- }
- }
- class Wrapper extends React.Component {
- render() {
- return this.props.showInner ? <Inner /> : null;
- }
- }
- var el = document.createElement("div");
- var component;
- // Render the <Inner /> component...
- component = ReactDOM.render(<Wrapper showInner={true} />, el);
- expect(ReactDOM.findDOMNode(component)).not.toBe(null);
- // Switch to null...
- component = ReactDOM.render(<Wrapper showInner={false} />, el);
- // expect(ReactDOM.findDOMNode(component).nodeName).toBe("#comment");
- // ...then switch back.
- component = ReactDOM.render(<Wrapper showInner={true} />, el);
- expect(ReactDOM.findDOMNode(component)).not.toBe(null);
- expect(assertions).toBe(3);
-
- });
- it("preserves the dom node during updates", () => {
- class Empty extends React.Component {
- render() {
- return null;
- }
- }
- var container = document.createElement("div");
- ReactDOM.render(<Empty />, container);
- var noscript1 = container.firstChild;
-
- expect(noscript1.nodeName).toBe("#comment");
-
- // This update shouldn't create a DOM node
- ReactDOM.render(<Empty />, container);
- var noscript2 = container.firstChild;
-
- expect(noscript2.nodeName).toBe("#comment");
-
- expect(noscript1).toBe(noscript2);
- });
- });
|