diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/client/webconsole/new-console-output/test/helpers.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/webconsole/new-console-output/test/helpers.js')
-rw-r--r-- | devtools/client/webconsole/new-console-output/test/helpers.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/devtools/client/webconsole/new-console-output/test/helpers.js b/devtools/client/webconsole/new-console-output/test/helpers.js new file mode 100644 index 000000000..39807eaed --- /dev/null +++ b/devtools/client/webconsole/new-console-output/test/helpers.js @@ -0,0 +1,67 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +let ReactDOM = require("devtools/client/shared/vendor/react-dom"); +let React = require("devtools/client/shared/vendor/react"); +var TestUtils = React.addons.TestUtils; + +const actions = require("devtools/client/webconsole/new-console-output/actions/index"); +const { configureStore } = require("devtools/client/webconsole/new-console-output/store"); +const { IdGenerator } = require("devtools/client/webconsole/new-console-output/utils/id-generator"); +const { stubPackets } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index"); + +/** + * Prepare actions for use in testing. + */ +function setupActions() { + // Some actions use dependency injection. This helps them avoid using state in + // a hard-to-test way. We need to inject stubbed versions of these dependencies. + const wrappedActions = Object.assign({}, actions); + + const idGenerator = new IdGenerator(); + wrappedActions.messageAdd = (packet) => { + return actions.messageAdd(packet, idGenerator); + }; + + return wrappedActions; +} + +/** + * Prepare the store for use in testing. + */ +function setupStore(input) { + const store = configureStore(); + + // Add the messages from the input commands to the store. + input.forEach((cmd) => { + store.dispatch(actions.messageAdd(stubPackets.get(cmd))); + }); + + return store; +} + +function renderComponent(component, props) { + const el = React.createElement(component, props, {}); + // By default, renderIntoDocument() won't work for stateless components, but + // it will work if the stateless component is wrapped in a stateful one. + // See https://github.com/facebook/react/issues/4839 + const wrappedEl = React.DOM.span({}, [el]); + const renderedComponent = TestUtils.renderIntoDocument(wrappedEl); + return ReactDOM.findDOMNode(renderedComponent).children[0]; +} + +function shallowRenderComponent(component, props) { + const el = React.createElement(component, props); + const renderer = TestUtils.createRenderer(); + renderer.render(el, {}); + return renderer.getRenderOutput(); +} + +module.exports = { + setupActions, + setupStore, + renderComponent, + shallowRenderComponent +}; |