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/renderers/__tests__/EventPluginHub-test.js describe("ReactDOM", function () { // this.timeout(200000); it('allows a DOM element to be used with a string', () => { var element = React.createElement('div', { className: 'foo' }); var instance = ReactTestUtils.renderIntoDocument(element); expect(ReactDOM.findDOMNode(instance).tagName).toBe('DIV'); }); it('should allow children to be passed as an argument', () => { var argDiv = ReactTestUtils.renderIntoDocument( React.createElement('div', null, 'child'), ); var argNode = ReactDOM.findDOMNode(argDiv); expect(argNode.innerHTML).toBe('child'); }); it('should overwrite props.children with children argument', () => { var conflictDiv = ReactTestUtils.renderIntoDocument( React.createElement('div', { children: 'fakechild' }, 'child'), ); var conflictNode = ReactDOM.findDOMNode(conflictDiv); expect(conflictNode.innerHTML).toBe('child'); }); /** * We need to make sure that updates occur to the actual node that's in the * DOM, instead of a stale cache. */ it('should purge the DOM cache when removing nodes', () => { var myDiv = ReactTestUtils.renderIntoDocument(
,
, ); // Warm the cache with theDog myDiv = ReactTestUtils.renderIntoDocument(
,
,
, ); // Remove theDog - this should purge the cache myDiv = ReactTestUtils.renderIntoDocument(
,
, ); // Now, put theDog back. It's now a different DOM node. myDiv = ReactTestUtils.renderIntoDocument(
,
,
, ); // Change the className of theDog. It will use the same element myDiv = ReactTestUtils.renderIntoDocument(
,
,
, ); var root = ReactDOM.findDOMNode(myDiv); var dog = root.childNodes[0]; expect(dog.className).toBe('bigdog'); }); })