Update tests for v0.14 and refactor how addons expose interfaces.

This commit is contained in:
James Brantly
2015-11-05 07:01:14 -05:00
parent bf061642b0
commit 619033254c
11 changed files with 345 additions and 607 deletions

View File

@@ -148,21 +148,22 @@ var clonedDOMElement: React.HTMLElement =
// React.render
var component: React.Component<Props, any> =
React.render(element, container);
ReactDOM.render(element, container);
var classicComponent: React.ClassicComponent<Props, any> =
React.render(classicElement, container);
ReactDOM.render(classicElement, container);
var domComponent: React.DOMComponent<any> =
React.render(domElement, container);
ReactDOM.render(domElement, container);
// Other Top-Level API
var unmounted: boolean = React.unmountComponentAtNode(container);
var str: string = React.renderToString(element);
var markup: string = React.renderToStaticMarkup(element);
var unmounted: boolean = ReactDOM.unmountComponentAtNode(container);
// ReactDOMServer is not supported in global version
// var str: string = ReactDOMServer.renderToString(element);
// var markup: string = ReactDOMServer.renderToStaticMarkup(element);
var notValid: boolean = React.isValidElement(props); // false
var isValid = React.isValidElement(element); // true
React.initializeTouchEvents(true);
var domNode: Element = React.findDOMNode(component);
domNode = React.findDOMNode(domNode);
var domNode: Element = ReactDOM.findDOMNode(component);
domNode = ReactDOM.findDOMNode(domNode);
//
// React Elements
@@ -190,11 +191,7 @@ component.setState({ inputValue: "!!!" });
component.forceUpdate();
// classic
var htmlElement: Element = classicComponent.getDOMNode();
var divElement: HTMLDivElement = classicComponent.getDOMNode<HTMLDivElement>();
var isMounted: boolean = classicComponent.isMounted();
classicComponent.setProps(elementProps);
classicComponent.replaceProps(props);
classicComponent.replaceState({ inputValue: "???", seconds: 60 });
var myComponent = <MyComponent>component;
@@ -366,5 +363,93 @@ class Timer extends React.Component<{}, TimerState> {
);
}
}
React.render(React.createElement(Timer), container);
ReactDOM.render(React.createElement(Timer), container);
//
// createFragment addon
// --------------------------------------------------------------------------
React.addons.createFragment({
a: React.DOM.div(),
b: ["a", false, React.createElement("span")]
});
//
// CSSTransitionGroup addon
// --------------------------------------------------------------------------
React.createFactory(React.addons.CSSTransitionGroup)({
component: React.createClass({
render: (): React.ReactElement<any> => null
}),
childFactory: (c) => c,
transitionName: "transition",
transitionAppear: false,
transitionEnter: true,
transitionLeave: true
});
//
// LinkedStateMixin addon
// --------------------------------------------------------------------------
React.createClass({
mixins: [React.addons.LinkedStateMixin],
render: function() { return React.DOM.div(null) }
});
//
// Perf addon
// --------------------------------------------------------------------------
React.addons.Perf.start();
React.addons.Perf.stop();
var measurements = React.addons.Perf.getLastMeasurements();
React.addons.Perf.printInclusive(measurements);
React.addons.Perf.printExclusive(measurements);
React.addons.Perf.printWasted(measurements);
React.addons.Perf.printDOM(measurements);
//
// PureRenderMixin addon
// --------------------------------------------------------------------------
React.createClass({
mixins: [React.addons.PureRenderMixin],
render: function() { return React.DOM.div(null) }
});
//
// TestUtils addon
// --------------------------------------------------------------------------
var node: Element;
React.addons.TestUtils.Simulate.click(node);
React.addons.TestUtils.Simulate.change(node);
React.addons.TestUtils.Simulate.keyDown(node, { key: "Enter" });
var renderer: React.ShallowRenderer =
React.addons.TestUtils.createRenderer();
renderer.render(React.createElement(Timer));
var output: React.ReactElement<React.Props<Timer>> =
renderer.getRenderOutput();
//
// TransitionGroup addon
// --------------------------------------------------------------------------
React.createFactory(React.addons.TransitionGroup)({ component: "div" });
//
// update addon
// --------------------------------------------------------------------------
{
// These are copied from https://facebook.github.io/react/docs/update.html
let initialArray = [1, 2, 3];
let newArray = React.addons.update(initialArray, {$push: [4]}); // => [1, 2, 3, 4]
let collection = [1, 2, {a: [12, 17, 15]}];
let newCollection = React.addons.update(collection, {2: {a: {$splice: [[1, 1, 13, 14]]}}});
// => [1, 2, {a: [12, 13, 14, 15]}]
let obj = {a: 5, b: 3};
let newObj = React.addons.update(obj, {b: {$apply: function(x) {return x * 2;}}});
// => {a: 5, b: 6}
let newObj2 = React.addons.update(obj, {b: {$set: obj.b * 2}});
let objShallow = {a: 5, b: 3};
let newObjShallow = React.addons.update(obj, {$merge: {b: 6, c: 7}}); // => {a: 5, b: 6, c: 7}
}