Repository: couchdb-fauxton Updated Branches: refs/heads/master 574af6a8b -> e6450a0d0
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx b/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx index 67df4e5..e217d3c 100644 --- a/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx +++ b/app/addons/documents/index-editor/tests/viewIndex.componentsSpec.react.jsx @@ -16,8 +16,9 @@ define([ 'addons/documents/index-editor/actions', 'addons/documents/resources', 'testUtils', - "react" -], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React) { + "react", + 'react-dom' +], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React, ReactDOM) { FauxtonAPI.router = new FauxtonAPI.Router([]); var assert = utils.assert; @@ -53,7 +54,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); describe('getReduceValue', function () { @@ -169,12 +170,12 @@ define([ afterEach(function () { restore(Actions.newDesignDoc); restore(Actions.designDocChange); - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('calls new design doc on new selected', function () { var spy = sinon.spy(Actions, 'newDesignDoc'); - TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#ddoc')[0], { + TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#ddoc')[0], { target: { value: 'new' } @@ -185,7 +186,7 @@ define([ it('calls design doc changed on a different design doc selected', function () { var spy = sinon.spy(Actions, 'designDocChange'); - TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#ddoc')[0], { + TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#ddoc')[0], { target: { value: 'another-doc' } @@ -197,7 +198,7 @@ define([ it('calls design doc changed on new design doc entered', function () { var spy = sinon.spy(Actions, 'designDocChange'); Actions.newDesignDoc(); - TestUtils.Simulate.change($(selectorEl.getDOMNode()).find('#new-ddoc')[0], { + TestUtils.Simulate.change($(ReactDOM.findDOMNode(selectorEl)).find('#new-ddoc')[0], { target: { value: 'new-doc-entered' } @@ -207,12 +208,12 @@ define([ }); it('does not filter usual design docs', function () { - assert.ok(/_design\/test-doc/.test($(selectorEl.getDOMNode()).text())); + assert.ok(/_design\/test-doc/.test($(ReactDOM.findDOMNode(selectorEl)).text())); }); it('filters mango docs', function () { selectorEl = TestUtils.renderIntoDocument(<Views.DesignDocSelector/>, container); - assert.notOk(/_design\/123mango/.test($(selectorEl.getDOMNode()).text())); + assert.notOk(/_design\/123mango/.test($(ReactDOM.findDOMNode(selectorEl)).text())); }); }); @@ -228,7 +229,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); sandbox.restore(); }); @@ -253,7 +254,7 @@ define([ it('calls changeViewName on view name change', function () { var viewName = 'new-name'; var spy = sandbox.spy(Actions, 'changeViewName'); - var el = $(editorEl.getDOMNode()).find('#index-name')[0]; + var el = $(ReactDOM.findDOMNode(editorEl)).find('#index-name')[0]; TestUtils.Simulate.change(el, { target: { value: viewName http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/index-results/index-results.components.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/index-results/index-results.components.react.jsx b/app/addons/documents/index-results/index-results.components.react.jsx index 40af4e2..f809883 100644 --- a/app/addons/documents/index-results/index-results.components.react.jsx +++ b/app/addons/documents/index-results/index-results.components.react.jsx @@ -423,7 +423,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, Documents, Fauxto disabled={this.props.isLoading} title="Select all docs that can be..." /> : null} - <ReactCSSTransitionGroup transitionName="slow-fade"> + <ReactCSSTransitionGroup transitionName="slow-fade" transitionEnterTimeout={500} transitionLeaveTimeout={300}> {this.getDocumentList()} </ReactCSSTransitionGroup> </div> http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx b/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx index 7182cb6..7bde20b 100644 --- a/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx +++ b/app/addons/documents/index-results/tests/index-results.componentsSpec.react.jsx @@ -16,11 +16,11 @@ define([ 'addons/documents/index-results/stores', 'addons/documents/resources', 'addons/databases/resources', - 'addons/documents/tests/document-test-helper', 'testUtils', - "react" -], function (FauxtonAPI, Views, IndexResultsActions, Stores, Documents, Databases, documentTestHelper, utils, React) { + "react", + 'react-dom' +], function (FauxtonAPI, Views, IndexResultsActions, Stores, Documents, Databases, documentTestHelper, utils, React, ReactDOM) { FauxtonAPI.router = new FauxtonAPI.Router([]); var assert = utils.assert; @@ -39,7 +39,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(React.findDOMNode(instance).parentNode); + ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode); store.reset(); }); @@ -51,7 +51,7 @@ define([ IndexResultsActions.resultsListReset(); instance = TestUtils.renderIntoDocument(<Views.List />, container); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.equal($el.text(), 'No Index Created Yet!'); }); @@ -74,7 +74,7 @@ define([ instance = TestUtils.renderIntoDocument(<Views.List />, container); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.equal($el.text(), 'I <3 Hamburg'); }); }); @@ -93,7 +93,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(React.findDOMNode(instance).parentNode); + ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode); store.reset(); }); @@ -112,7 +112,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.tableview-checkbox-cell input').length === 0); }); @@ -143,7 +143,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.tableview-checkbox-cell input').length > 0); }); @@ -168,7 +168,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.tableview-checkbox-cell input').length === 0); }); @@ -188,7 +188,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.tableview-checkbox-cell input').length === 0); }); @@ -208,7 +208,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.tableview-checkbox-cell input').length > 0); }); @@ -228,7 +228,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.js-row-select').length > 0); }); @@ -247,7 +247,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.notOk($el.hasClass('show-select')); }); @@ -261,7 +261,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(React.findDOMNode(instance).parentNode); + ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode); store.reset(); }); @@ -282,7 +282,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); var $targetNode = $el.find('td.tableview-el-last').prev(); var formattedDoc = JSON.stringify(doc.object, null, ' '); @@ -300,7 +300,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.equal($el.find('.icon-filter').length, 0); @@ -318,7 +318,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(React.findDOMNode(instance).parentNode); + ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(instance).parentNode); store.reset(); }); @@ -329,7 +329,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.loading-lines').length === 1); }); @@ -341,7 +341,7 @@ define([ container ); - var $el = $(instance.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(instance)); assert.ok($el.find('.loading-lines').length === 0); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx b/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx index 2c126ad..5b276f9 100644 --- a/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx +++ b/app/addons/documents/mango/tests/mango.componentsSpec.react.jsx @@ -16,13 +16,12 @@ define([ 'addons/documents/mango/mango.stores', 'addons/documents/mango/mango.actions', 'addons/documents/mango/mango.actiontypes', - 'addons/documents/resources', 'addons/databases/resources', - 'testUtils', - 'react' -], function (FauxtonAPI, Views, Stores, MangoActions, ActionTypes, Resources, Databases, utils, React) { + 'react', + 'react-dom' +], function (FauxtonAPI, Views, Stores, MangoActions, ActionTypes, Resources, Databases, utils, React, ReactDOM) { var assert = utils.assert; var TestUtils = React.addons.TestUtils; @@ -40,7 +39,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('renders a default index definition', function () { @@ -58,7 +57,7 @@ define([ <Views.MangoIndexEditorController description="foo" />, container ); - var $el = $(editor.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(editor)); assert.equal($el.find('.db-title').text(), 'testdb'); }); @@ -68,7 +67,7 @@ define([ <Views.MangoIndexEditorController description="CouchDB Query is great!" />, container ); - var $el = $(editor.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(editor)); assert.equal($el.find('.editor-description').text(), 'CouchDB Query is great!'); }); @@ -123,7 +122,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('lists our available indexes', function () { @@ -131,7 +130,7 @@ define([ <Views.MangoQueryEditorController description="foo" />, container ); - var $el = $(editor.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(editor)); assert.equal($el.find('.mango-available-indexes').length, 1); assert.include( @@ -145,7 +144,7 @@ define([ }); it('has a default query', function () { - editor = React.render( + editor = ReactDOM.render( <Views.MangoQueryEditorController description="foo" />, container ); @@ -183,7 +182,7 @@ define([ <Views.MangoQueryEditorController description="foo" />, container ); - var $el = $(editor.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(editor)); assert.equal($el.find('.info-changed-query').length, 1); }); @@ -192,7 +191,7 @@ define([ <Views.MangoQueryEditorController description="foo" />, container ); - var $el = $(editor.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(editor)); assert.equal($el.find('.db-title').text(), 'testdb'); }); @@ -202,7 +201,7 @@ define([ <Views.MangoQueryEditorController description="CouchDB Query is great!" />, container ); - var $el = $(editor.getDOMNode()); + var $el = $(ReactDOM.findDOMNode(editor)); assert.equal($el.find('.editor-description').text(), 'CouchDB Query is great!'); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx b/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx index 7c6c07e..afeaaac 100644 --- a/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx +++ b/app/addons/documents/pagination/tests/pagination.componentSpec.react.jsx @@ -14,8 +14,8 @@ define([ 'addons/documents/pagination/pagination.react', 'testUtils', 'react', - -], function (FauxtonAPI, Views, utils, React) { + 'react-dom' +], function (FauxtonAPI, Views, utils, React, ReactDOM) { FauxtonAPI.router = new FauxtonAPI.Router([]); @@ -39,11 +39,11 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(React.findDOMNode(selectorEl).parentNode); + ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(selectorEl).parentNode); }); it('on new select calls callback with new page size', function () { - var selectEl = $(selectorEl.getDOMNode()).find('#select-per-page')[0]; + var selectEl = $(ReactDOM.findDOMNode(selectorEl)).find('#select-per-page')[0]; var perPage = 5; TestUtils.Simulate.change(selectEl, { target: { @@ -63,7 +63,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(React.findDOMNode(selectorEl).parentNode); + ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(selectorEl).parentNode); }); it('shows the amount of fields, none hidden', function () { @@ -73,7 +73,7 @@ define([ container ); - var text = $(selectorEl.getDOMNode()).find('.shown-fields').text(); + var text = $(ReactDOM.findDOMNode(selectorEl)).find('.shown-fields').text(); assert.equal('Showing 7 columns.', text); }); @@ -85,7 +85,7 @@ define([ container ); - var text = $(selectorEl.getDOMNode()).find('.shown-fields').text(); + var text = $(ReactDOM.findDOMNode(selectorEl)).find('.shown-fields').text(); assert.equal('Showing 5 of 7 columns.', text); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/queryoptions/queryoptions.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/queryoptions/queryoptions.react.jsx b/app/addons/documents/queryoptions/queryoptions.react.jsx index 977edba..ff8b76c 100644 --- a/app/addons/documents/queryoptions/queryoptions.react.jsx +++ b/app/addons/documents/queryoptions/queryoptions.react.jsx @@ -14,12 +14,13 @@ define([ 'app', 'api', 'react', + 'react-dom', 'addons/documents/queryoptions/stores', 'addons/documents/queryoptions/actions', - 'addons/components/react-components.react', + 'addons/components/react-components.react' ], -function (app, FauxtonAPI, React, Stores, Actions, Components) { +function (app, FauxtonAPI, React, ReactDOM, Stores, Actions, Components) { var store = Stores.queryOptionsStore; var Tray = Components.Tray; var TrayContents = Components.TrayContents; @@ -127,8 +128,8 @@ function (app, FauxtonAPI, React, Stores, Actions, Components) { updateBetweenKeys: function () { this.props.updateBetweenKeys({ - startkey: React.findDOMNode(this.refs.startkey).value, - endkey: React.findDOMNode(this.refs.endkey).value, + startkey: ReactDOM.findDOMNode(this.refs.startkey).value, + endkey: ReactDOM.findDOMNode(this.refs.endkey).value, include: this.props.betweenKeys.include }); }, @@ -390,7 +391,7 @@ A key value is the first parameter emitted in a map function. For example emit(" KeySearchFields: KeySearchFields, AdditionalParams: AdditionalParams, render: function (el) { - React.render(<QueryOptionsController />, $(el)[0]); + ReactDOM.render(<QueryOptionsController />, $(el)[0]); } }; }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx b/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx index b782d48..47ed9c8 100644 --- a/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx +++ b/app/addons/documents/queryoptions/tests/queryoptions.componentsSpec.react.jsx @@ -16,8 +16,9 @@ define([ 'addons/documents/queryoptions/actions', 'addons/documents/resources', 'testUtils', - "react" -], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React) { + "react", + 'react-dom' +], function (FauxtonAPI, Views, Stores, Actions, Documents, utils, React, ReactDOM) { FauxtonAPI.router = new FauxtonAPI.Router([]); var assert = utils.assert; @@ -32,7 +33,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); describe('MainFieldsView', function () { @@ -52,7 +53,7 @@ define([ it('updates group level', function () { var spy = sinon.spy(); mainFieldsEl = TestUtils.renderIntoDocument(<Views.MainFieldsView updateGroupLevel={spy} reduce={true} includeDocs={false} showReduce={true}/>, container); - var el = $(mainFieldsEl.getDOMNode()).find('#qoGroupLevel')[0]; + var el = $(ReactDOM.findDOMNode(mainFieldsEl)).find('#qoGroupLevel')[0]; TestUtils.Simulate.change(el, {target: {value: 'exact'}}); assert.ok(spy.calledOnce); @@ -61,7 +62,7 @@ define([ it('toggles include docs on change', function () { var spy = sinon.spy(); mainFieldsEl = TestUtils.renderIntoDocument(<Views.MainFieldsView toggleIncludeDocs={spy} reduce={false} includeDocs={false} showReduce={false}/>, container); - var el = $(mainFieldsEl.getDOMNode()).find('#qoIncludeDocs')[0]; + var el = $(ReactDOM.findDOMNode(mainFieldsEl)).find('#qoIncludeDocs')[0]; TestUtils.Simulate.change(el); assert.ok(spy.calledOnce); @@ -72,7 +73,7 @@ define([ mainFieldsEl = TestUtils.renderIntoDocument( <Views.MainFieldsView reduce={false} includeDocs={false} showReduce={false} docURL={customDocURL} />, container); - assert.equal($(React.findDOMNode(mainFieldsEl)).find('.help-link').attr('href'), customDocURL); + assert.equal($(ReactDOM.findDOMNode(mainFieldsEl)).find('.help-link').attr('href'), customDocURL); }); }); @@ -88,7 +89,7 @@ define([ toggleByKeys={spy} />, container); - var el = $(keysEl.getDOMNode()).find('#byKeys')[0]; + var el = $(ReactDOM.findDOMNode(keysEl)).find('#byKeys')[0]; TestUtils.Simulate.click(el); assert.ok(spy.calledOnce); }); @@ -102,7 +103,7 @@ define([ betweenKeys={{}} />, container); - var el = $(keysEl.getDOMNode()).find('#betweenKeys')[0]; + var el = $(ReactDOM.findDOMNode(keysEl)).find('#betweenKeys')[0]; TestUtils.Simulate.click(el); assert.ok(spy.calledOnce); }); @@ -116,7 +117,7 @@ define([ betweenKeys={{}} />, container); - var el = $(keysEl.getDOMNode()).find('#keys-input')[0]; + var el = $(ReactDOM.findDOMNode(keysEl)).find('#keys-input')[0]; TestUtils.Simulate.change(el, {target: {value: 'boom'}}); assert.ok(spy.calledWith('boom')); }); @@ -135,7 +136,7 @@ define([ betweenKeys={betweenKeys} />, container); - var el = $(keysEl.getDOMNode()).find('#endkey')[0]; + var el = $(ReactDOM.findDOMNode(keysEl)).find('#endkey')[0]; TestUtils.Simulate.change(el, {target: {value: 'boom'}}); assert.ok(spy.calledOnce); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/sidebar/sidebar.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/sidebar/sidebar.react.jsx b/app/addons/documents/sidebar/sidebar.react.jsx index 660fff5..dd5abc2 100644 --- a/app/addons/documents/sidebar/sidebar.react.jsx +++ b/app/addons/documents/sidebar/sidebar.react.jsx @@ -14,16 +14,16 @@ define([ 'app', 'api', 'react', + 'react-dom', 'addons/documents/sidebar/stores', 'addons/documents/sidebar/actions', 'addons/components/react-components.react', 'addons/documents/views', 'addons/documents/helpers', - 'plugins/prettify' ], -function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, DocumentHelper) { +function (app, FauxtonAPI, React, ReactDOM, Stores, Actions, Components, DocumentViews, DocumentHelper) { var DeleteDBModal = DocumentViews.Views.DeleteDBModal; var store = Stores.sidebarStore; var LoadLines = Components.LoadLines; @@ -135,7 +135,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, Do e.preventDefault(); var newToggleState = !this.props.contentVisible; var state = newToggleState ? 'show' : 'hide'; - $(React.findDOMNode(this)).find('.accordion-body').collapse(state); + $(ReactDOM.findDOMNode(this)).find('.accordion-body').collapse(state); this.props.toggle(this.props.designDocName, this.props.title); }, @@ -221,7 +221,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, Do e.preventDefault(); var newToggleState = !this.props.contentVisible; var state = newToggleState ? 'show' : 'hide'; - $(React.findDOMNode(this)).find('#' + this.props.designDocName).collapse(state); + $(ReactDOM.findDOMNode(this)).find('#' + this.props.designDocName).collapse(state); this.props.toggle(this.props.designDocName); }, @@ -326,7 +326,7 @@ function (app, FauxtonAPI, React, Stores, Actions, Components, DocumentViews, Do this.dbModal = new DeleteDBModal({ database: this.props.database, isSystemDatabase: (/^_/).test(this.props.database.id), - el: React.findDOMNode(this) + el: ReactDOM.findDOMNode(this) }); this.dbModal.render(); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx b/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx index ec3a046..a57fc28 100644 --- a/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx +++ b/app/addons/documents/sidebar/tests/sidebar.componentsSpec.react.jsx @@ -12,9 +12,10 @@ define([ 'api', 'react', + 'react-dom', 'testUtils', 'addons/documents/sidebar/sidebar.react' -], function (FauxtonAPI, React, utils, Components) { +], function (FauxtonAPI, React, ReactDOM, utils, Components) { var assert = utils.assert; var TestUtils = React.addons.TestUtils; var DesignDoc = Components.DesignDoc; @@ -28,7 +29,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('confirm only single sub-option is shown by default (metadata link)', function () { @@ -41,7 +42,7 @@ define([ designDoc={{}} designDocName="id" databaseName="db-name" />, container); - var subOptions = $(React.findDOMNode(el)).find('.accordion-body li'); + var subOptions = $(ReactDOM.findDOMNode(el)).find('.accordion-body li'); assert.equal(subOptions.length, 1); }); @@ -64,7 +65,7 @@ define([ }} designDocName="id" databaseName="db-name" />, container); - var subOptions = $(React.findDOMNode(el)).find('.accordion-body li'); + var subOptions = $(ReactDOM.findDOMNode(el)).find('.accordion-body li'); assert.equal(subOptions.length, 3); // 1 for "Metadata" row, 1 for Type List row ("search indexes") and one for the index itself }); @@ -83,7 +84,7 @@ define([ designDoc={{}} // note that this is empty designDocName="id" databaseName="db-name" />, container); - var subOptions = $(React.findDOMNode(el)).find('.accordion-body li'); + var subOptions = $(ReactDOM.findDOMNode(el)).find('.accordion-body li'); assert.equal(subOptions.length, 1); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/documents/tests/helpersSpec.js ---------------------------------------------------------------------- diff --git a/app/addons/documents/tests/helpersSpec.js b/app/addons/documents/tests/helpersSpec.js new file mode 100644 index 0000000..0f2ba29 --- /dev/null +++ b/app/addons/documents/tests/helpersSpec.js @@ -0,0 +1,31 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy of +// the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +define([ + 'api', + 'addons/documents/helpers', + 'testUtils' +], function (FauxtonAPI, Helpers, testUtils) { + var assert = testUtils.assert; + + describe('Helpers', function () { + + describe('parseJSON', function () { + it('replaces "\\n" with actual newlines', function () { + var string = 'I am a string\\nwith\\nfour\\nlinebreaks\\nin'; + var result = Helpers.parseJSON(string); + assert.equal(result.match(/\n/g).length, 4); + }); + }); + + }); + +}); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/components.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/fauxton/components.react.jsx b/app/addons/fauxton/components.react.jsx index 1eecb46..7847f0a 100644 --- a/app/addons/fauxton/components.react.jsx +++ b/app/addons/fauxton/components.react.jsx @@ -14,6 +14,7 @@ define([ 'app', 'api', 'react', + 'react-dom', 'ZeroClipboard', 'libs/react-bootstrap', @@ -21,7 +22,7 @@ define([ 'velocity.ui' ], -function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) { +function (app, FauxtonAPI, React, ReactDOM, ZeroClipboard, ReactBootstrap) { var Modal = ReactBootstrap.Modal; @@ -60,7 +61,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) { }, componentDidMount: function () { - var el = React.findDOMNode(this); + var el = ReactDOM.findDOMNode(this); this.clipboard = new ZeroClipboard(el); this.clipboard.on('load', function () { this.clipboard.on('mouseup', function () { @@ -94,7 +95,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) { }, componentDidMount: function () { - var el = React.findDOMNode(this.refs["copy-text-" + this.props.uniqueKey]); + var el = ReactDOM.findDOMNode(this.refs["copy-text-" + this.props.uniqueKey]); this.clipboard = new ZeroClipboard(el); this.clipboard.on('load', function () { this.clipboard.on('mouseup', function () { @@ -215,7 +216,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) { show: function (done) { this.setState({show: true}); - $(React.findDOMNode(this.refs.myself)).velocity('transition.slideDownIn', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () { + $(ReactDOM.findDOMNode(this.refs.myself)).velocity('transition.slideDownIn', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () { if (done) { done(true); } @@ -223,7 +224,7 @@ function (app, FauxtonAPI, React, ZeroClipboard, ReactBootstrap) { }, hide: function (done) { - $(React.findDOMNode(this.refs.myself)).velocity('reverse', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () { + $(ReactDOM.findDOMNode(this.refs.myself)).velocity('reverse', FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED, function () { this.setState({show: false}); if (done) { done(false); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/navigation/components.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/fauxton/navigation/components.react.jsx b/app/addons/fauxton/navigation/components.react.jsx index 0310530..bc06215 100644 --- a/app/addons/fauxton/navigation/components.react.jsx +++ b/app/addons/fauxton/navigation/components.react.jsx @@ -13,11 +13,12 @@ define([ 'app', 'api', 'react', + 'react-dom', 'addons/fauxton/navigation/stores', 'addons/fauxton/navigation/actions' ], -function (app, FauxtonAPI, React, Stores, Actions) { +function (app, FauxtonAPI, React, ReactDOM, Stores, Actions) { var navBarStore = Stores.navBarStore; var Footer = React.createClass({ @@ -152,7 +153,7 @@ function (app, FauxtonAPI, React, Stores, Actions) { return { renderNavBar: function (el) { - React.render(<NavBar/>, el); + ReactDOM.render(<NavBar/>, el); }, NavBar: NavBar, Burger: Burger http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx b/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx index 2820ef4..2b4708c 100644 --- a/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx +++ b/app/addons/fauxton/navigation/tests/componentsSpec.react.jsx @@ -16,8 +16,9 @@ define([ 'core/auth', 'addons/auth/base', 'testUtils', - "react" -], function (FauxtonAPI, Views, Actions, Auth, BaseAuth, utils, React) { + "react", + 'react-dom' +], function (FauxtonAPI, Views, Actions, Auth, BaseAuth, utils, React, ReactDOM) { var assert = utils.assert; var TestUtils = React.addons.TestUtils; @@ -34,11 +35,11 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('dispatch TOGGLE_NAVBAR_MENU on click', function () { - TestUtils.Simulate.click(burgerEl.getDOMNode()); + TestUtils.Simulate.click(ReactDOM.findDOMNode(burgerEl)); assert.ok(toggleMenu.calledOnce); }); @@ -57,13 +58,13 @@ define([ FauxtonAPI.session.trigger('change'); // confirm the logout link is present - var matches = React.findDOMNode(el).outerHTML.match(/Logout/); + var matches = ReactDOM.findDOMNode(el).outerHTML.match(/Logout/); assert.equal(matches.length, 1); // now confirm there's still only a single logout link after publishing multiple FauxtonAPI.session.trigger('change'); FauxtonAPI.session.trigger('change'); - matches = React.findDOMNode(el).outerHTML.match(/Logout/); + matches = ReactDOM.findDOMNode(el).outerHTML.match(/Logout/); assert.equal(matches.length, 1); FauxtonAPI.session.isLoggedIn.restore(); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/notifications/notifications.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/fauxton/notifications/notifications.react.jsx b/app/addons/fauxton/notifications/notifications.react.jsx index 443e687..2991a6f 100644 --- a/app/addons/fauxton/notifications/notifications.react.jsx +++ b/app/addons/fauxton/notifications/notifications.react.jsx @@ -14,6 +14,7 @@ define([ 'app', 'api', 'react', + 'react-dom', 'addons/fauxton/notifications/actions', 'addons/fauxton/notifications/stores', 'addons/fauxton/components.react', @@ -22,7 +23,7 @@ define([ 'velocity.ui' ], -function (app, FauxtonAPI, React, Actions, Stores, Components) { +function (app, FauxtonAPI, React, ReactDOM, Actions, Stores, Components) { var notificationStore = Stores.notificationStore; var Clipboard = Components.Clipboard; @@ -197,18 +198,18 @@ function (app, FauxtonAPI, React, Actions, Stores, Components) { show = this.props.item.type === this.props.filter; } if (show) { - $(React.findDOMNode(this)).velocity({ opacity: 1, height: this.state.elementHeight }, this.props.transitionSpeed); + $(ReactDOM.findDOMNode(this)).velocity({ opacity: 1, height: this.state.elementHeight }, this.props.transitionSpeed); return; } this.hide(); }, getHeight: function () { - return $(React.findDOMNode(this)).outerHeight(true); + return $(ReactDOM.findDOMNode(this)).outerHeight(true); }, hide: function (onHidden) { - $(React.findDOMNode(this)).velocity({ opacity: 0, height: 0 }, this.props.transitionSpeed, function () { + $(ReactDOM.findDOMNode(this)).velocity({ opacity: 0, height: 0 }, this.props.transitionSpeed, function () { if (onHidden) { onHidden(); } @@ -255,7 +256,7 @@ function (app, FauxtonAPI, React, Actions, Stores, Components) { NotificationRow: NotificationRow, renderNotificationCenter: function (el) { - return React.render(<NotificationCenterPanel />, el); + return ReactDOM.render(<NotificationCenterPanel />, el); } }; http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx b/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx index b72eac5..ab8d432 100644 --- a/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx +++ b/app/addons/fauxton/notifications/tests/componentsSpec.react.jsx @@ -15,8 +15,9 @@ define([ 'addons/fauxton/notifications/stores', 'testUtils', 'react', + 'react-dom', 'moment' -], function (FauxtonAPI, Views, Stores, utils, React, moment) { +], function (FauxtonAPI, Views, Stores, utils, React, ReactDOM, moment) { var assert = utils.assert; var TestUtils = React.addons.TestUtils; @@ -52,7 +53,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('shows all notification types when "all" filter applied', function () { @@ -60,22 +61,22 @@ define([ <Views.NotificationRow filter="all" item={notifications.success} />, container ); - assert.equal($(row1.getDOMNode()).attr('aria-hidden'), 'false'); - React.unmountComponentAtNode(container); + assert.equal($(ReactDOM.findDOMNode(row1)).attr('aria-hidden'), 'false'); + ReactDOM.unmountComponentAtNode(container); var row2 = TestUtils.renderIntoDocument( <Views.NotificationRow filter="all" item={notifications.error} />, container ); - assert.equal($(row2.getDOMNode()).attr('aria-hidden'), 'false'); - React.unmountComponentAtNode(container); + assert.equal($(ReactDOM.findDOMNode(row2)).attr('aria-hidden'), 'false'); + ReactDOM.unmountComponentAtNode(container); var row3 = TestUtils.renderIntoDocument( <Views.NotificationRow filter="all" item={notifications.info} />, container ); - assert.equal($(row3.getDOMNode()).attr('aria-hidden'), 'false'); - React.unmountComponentAtNode(container); + assert.equal($(ReactDOM.findDOMNode(row3)).attr('aria-hidden'), 'false'); + ReactDOM.unmountComponentAtNode(container); }); it('hides notification when filter doesn\'t match', function () { @@ -83,7 +84,7 @@ define([ <Views.NotificationRow filter="success" item={notifications.info} />, container ); - assert.equal($(rowEl.getDOMNode()).attr('aria-hidden'), 'true'); + assert.equal($(ReactDOM.findDOMNode(rowEl)).attr('aria-hidden'), 'true'); }); it('shows notification when filter exact match', function () { @@ -91,7 +92,7 @@ define([ <Views.NotificationRow filter="info" item={notifications.info} />, container ); - assert.equal($(rowEl.getDOMNode()).attr('aria-hidden'), 'false'); + assert.equal($(ReactDOM.findDOMNode(rowEl)).attr('aria-hidden'), 'false'); }); }); @@ -106,7 +107,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('shows all notifications by default', function () { @@ -118,7 +119,7 @@ define([ store.addNotification({ type: 'error', msg: 'Error #3' }); var panelEl = TestUtils.renderIntoDocument(<Views.NotificationCenterPanel />, container); - assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 6); + assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 6); }); it('clicking on a filter icon filters applies appropriate filter', function () { @@ -132,16 +133,16 @@ define([ var panelEl = TestUtils.renderIntoDocument(<Views.NotificationCenterPanel />, container); // there are 2 success messages - TestUtils.Simulate.click($(panelEl.getDOMNode()).find('.notification-filter li[data-filter="success"]')[0]); - assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 2); + TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('.notification-filter li[data-filter="success"]')[0]); + assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 2); // 3 errors - TestUtils.Simulate.click($(panelEl.getDOMNode()).find('.notification-filter li[data-filter="error"]')[0]); - assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 3); + TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('.notification-filter li[data-filter="error"]')[0]); + assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 3); // 1 info - TestUtils.Simulate.click($(panelEl.getDOMNode()).find('.notification-filter li[data-filter="info"]')[0]); - assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 1); + TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('.notification-filter li[data-filter="info"]')[0]); + assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 1); }); it('clear all clears all notifications', function () { @@ -151,10 +152,10 @@ define([ store.addNotification({ type: 'error', msg: 'Error #3' }); var panelEl = TestUtils.renderIntoDocument(<Views.NotificationCenterPanel />, container); - assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 4); - TestUtils.Simulate.click($(panelEl.getDOMNode()).find('footer input')[0]); + assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 4); + TestUtils.Simulate.click($(ReactDOM.findDOMNode(panelEl)).find('footer input')[0]); - assert.equal($(panelEl.getDOMNode()).find('.notification-list li[aria-hidden=false]').length, 0); + assert.equal($(ReactDOM.findDOMNode(panelEl)).find('.notification-list li[aria-hidden=false]').length, 0); }); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/fauxton/tests/componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/fauxton/tests/componentsSpec.react.jsx b/app/addons/fauxton/tests/componentsSpec.react.jsx index 3c7870f..fe77e8a 100644 --- a/app/addons/fauxton/tests/componentsSpec.react.jsx +++ b/app/addons/fauxton/tests/componentsSpec.react.jsx @@ -13,8 +13,9 @@ define([ 'api', 'addons/fauxton/components.react', 'testUtils', - 'react' -], function (FauxtonAPI, Views, utils, React) { + 'react', + 'react-dom' +], function (FauxtonAPI, Views, utils, React, ReactDOM) { var assert = utils.assert; var TestUtils = React.addons.TestUtils; @@ -37,7 +38,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); FauxtonAPI.constants.MISC.TRAY_TOGGLE_SPEED = oldToggleSpeed; }); @@ -94,7 +95,7 @@ define([ var trayEl = this.refs.tray; var externalEl = this.refs.externalElement; trayEl.show(function () { - TestUtils.Simulate.click(React.findDOMNode(externalEl)); + TestUtils.Simulate.click(ReactDOM.findDOMNode(externalEl)); assert.ok(spy.calledOnce); }); }, @@ -112,7 +113,7 @@ define([ var reactEl = TestUtils.renderIntoDocument(React.createElement(wrapper), container); reactEl.runTest(); - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); }); @@ -131,7 +132,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('renders 20-wise pages per default', function () { @@ -218,7 +219,7 @@ define([ <Views.Pagination page={1} total={100} onClick={spy} />, container ); - var links = React.findDOMNode(pageEl).getElementsByTagName("a"); + var links = ReactDOM.findDOMNode(pageEl).getElementsByTagName("a"); TestUtils.Simulate.click(links[3]); @@ -237,7 +238,7 @@ define([ <Views.Pagination page={currentPage} total={200} onClick={spy} />, container ); - var links = React.findDOMNode(pageEl).getElementsByTagName("a"); + var links = ReactDOM.findDOMNode(pageEl).getElementsByTagName("a"); TestUtils.Simulate.click(links[0]); assert.ok(spy.calledWith(currentPage - 1)); @@ -256,22 +257,22 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('shows a clipboard icon by default', function () { var clipboard = TestUtils.renderIntoDocument(<Views.Clipboard text="copy me" />, container); - assert.equal($(clipboard.getDOMNode()).find('.icon-paste').length, 1); + assert.equal($(ReactDOM.findDOMNode(clipboard)).find('.icon-paste').length, 1); }); it('shows text if specified', function () { var clipboard = TestUtils.renderIntoDocument(<Views.Clipboard displayType="text" text="copy me" />, container); - assert.equal($(clipboard.getDOMNode()).find('.icon-paste').length, 0); + assert.equal($(ReactDOM.findDOMNode(clipboard)).find('.icon-paste').length, 0); }); it('shows custom text if specified ', function () { var clipboard = TestUtils.renderIntoDocument(<Views.Clipboard displayType="text" textDisplay='booyah!' text="copy me" />, container); - assert.ok(/booyah!/.test($(clipboard.getDOMNode())[0].outerHTML)); + assert.ok(/booyah!/.test($(ReactDOM.findDOMNode(clipboard))[0].outerHTML)); }); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/permissions/tests/componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/permissions/tests/componentsSpec.react.jsx b/app/addons/permissions/tests/componentsSpec.react.jsx index 795f4cb..2b2feb6 100644 --- a/app/addons/permissions/tests/componentsSpec.react.jsx +++ b/app/addons/permissions/tests/componentsSpec.react.jsx @@ -16,8 +16,9 @@ define([ 'addons/permissions/components.react', 'addons/permissions/actions', 'testUtils', - "react" - ], function (FauxtonAPI, Databases, Permissions, Views, Actions, utils, React) { + "react", + 'react-dom' + ], function (FauxtonAPI, Databases, Permissions, Views, Actions, utils, React, ReactDOM) { var assert = utils.assert; var restore = utils.restore; var TestUtils = React.addons.TestUtils; @@ -50,7 +51,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('on Add triggers add action', function () { @@ -81,17 +82,17 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('adds user on submit', function () { - var input = $(el.getDOMNode()).find('input')[0]; + var input = $(ReactDOM.findDOMNode(el)).find('input')[0]; TestUtils.Simulate.change(input, { target: { value: 'newusername' } }); - var form = $(el.getDOMNode()).find('.permission-item-form')[0]; + var form = $(ReactDOM.findDOMNode(el)).find('.permission-item-form')[0]; TestUtils.Simulate.submit(form); var options = addSpy.args[0][0]; @@ -101,13 +102,13 @@ define([ }); it('adds role on submit', function () { - var input = $(el.getDOMNode()).find('input')[1]; + var input = $(ReactDOM.findDOMNode(el)).find('input')[1]; TestUtils.Simulate.change(input, { target: { value: 'newrole' } }); - var form = $(el.getDOMNode()).find('.permission-item-form')[1]; + var form = $(ReactDOM.findDOMNode(el)).find('.permission-item-form')[1]; TestUtils.Simulate.submit(form); var options = addSpy.args[0][0]; @@ -118,7 +119,7 @@ define([ it('stores new name on change', function () { var newName = 'newName'; - var dom = $(el.getDOMNode()).find('.item')[0]; + var dom = $(ReactDOM.findDOMNode(el)).find('.item')[0]; TestUtils.Simulate.change(dom, { target: { @@ -131,7 +132,7 @@ define([ it('stores new role on change', function () { var newRole = 'newRole'; - var dom = $(el.getDOMNode()).find('.item')[1]; + var dom = $(ReactDOM.findDOMNode(el)).find('.item')[1]; TestUtils.Simulate.change(dom, { target: { @@ -153,11 +154,11 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('triggers remove on click', function () { - var dom = $(el.getDOMNode()).find('.close')[0]; + var dom = $(ReactDOM.findDOMNode(el)).find('.close')[0]; TestUtils.Simulate.click(dom); assert.ok(removeSpy.calledOnce); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/setup/tests/setupComponentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/setup/tests/setupComponentsSpec.react.jsx b/app/addons/setup/tests/setupComponentsSpec.react.jsx index ead1f98..b6a8b86 100644 --- a/app/addons/setup/tests/setupComponentsSpec.react.jsx +++ b/app/addons/setup/tests/setupComponentsSpec.react.jsx @@ -14,8 +14,9 @@ define([ 'addons/setup/setup.react', 'addons/setup/setup.stores', 'testUtils', - 'react' -], function (FauxtonAPI, Views, Stores, utils, React) { + 'react', + 'react-dom' +], function (FauxtonAPI, Views, Stores, utils, React, ReactDOM) { var assert = utils.assert; var TestUtils = React.addons.TestUtils; @@ -31,7 +32,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('fires callbacks on change, ip', function () { @@ -40,7 +41,7 @@ define([ container ); - var node = $(optSettings.getDOMNode()).find('.setup-input-ip')[0]; + var node = $(ReactDOM.findDOMNode(optSettings)).find('.setup-input-ip')[0]; TestUtils.Simulate.change(node, {target: {value: 'Hello, world'}}); assert.ok(changeHandler.calledOnce); @@ -52,7 +53,7 @@ define([ container ); - var node = $(optSettings.getDOMNode()).find('.setup-input-port')[0]; + var node = $(ReactDOM.findDOMNode(optSettings)).find('.setup-input-port')[0]; TestUtils.Simulate.change(node, {target: {value: 'Hello, world'}}); assert.ok(changeHandler.calledOnce); @@ -74,12 +75,12 @@ define([ afterEach(function () { utils.restore(Stores.setupStore.getIsAdminParty); - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); Stores.setupStore.reset(); }); it('changes the values in the store for additional nodes', function () { - var $addNodesSection = $(controller.getDOMNode()).find('.setup-add-nodes-section'); + var $addNodesSection = $(ReactDOM.findDOMNode(controller)).find('.setup-add-nodes-section'); TestUtils.Simulate.change($addNodesSection.find('.setup-input-ip')[0], {target: {value: '192.168.13.37'}}); TestUtils.Simulate.change($addNodesSection.find('.setup-input-port')[0], {target: {value: '1337'}}); TestUtils.Simulate.change($addNodesSection.find('.input-remote-node')[0], {target: {value: 'node2.local'}}); @@ -91,7 +92,7 @@ define([ }); it('changes the values in the store for the setup node', function () { - var $setupNodesSection = $(controller.getDOMNode()).find('.setup-setupnode-section'); + var $setupNodesSection = $(ReactDOM.findDOMNode(controller)).find('.setup-setupnode-section'); TestUtils.Simulate.change($setupNodesSection.find('.setup-input-ip')[0], {target: {value: '192.168.42.42'}}); TestUtils.Simulate.change($setupNodesSection.find('.setup-input-port')[0], {target: {value: '4242'}}); TestUtils.Simulate.change($setupNodesSection.find('.setup-username')[0], {target: {value: 'tester'}}); @@ -120,12 +121,12 @@ define([ afterEach(function () { utils.restore(Stores.setupStore.getIsAdminParty); - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); Stores.setupStore.reset(); }); it('changes the values in the store for the setup node', function () { - var $setupNodesSection = $(controller.getDOMNode()).find('.setup-setupnode-section'); + var $setupNodesSection = $(ReactDOM.findDOMNode(controller)).find('.setup-setupnode-section'); TestUtils.Simulate.change($setupNodesSection.find('.setup-input-ip')[0], {target: {value: '192.168.13.42'}}); TestUtils.Simulate.change($setupNodesSection.find('.setup-input-port')[0], {target: {value: '1342'}}); TestUtils.Simulate.change($setupNodesSection.find('.setup-username')[0], {target: {value: 'tester'}}); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/addons/verifyinstall/tests/componentsSpec.react.jsx ---------------------------------------------------------------------- diff --git a/app/addons/verifyinstall/tests/componentsSpec.react.jsx b/app/addons/verifyinstall/tests/componentsSpec.react.jsx index e345a70..b0a48bc 100644 --- a/app/addons/verifyinstall/tests/componentsSpec.react.jsx +++ b/app/addons/verifyinstall/tests/componentsSpec.react.jsx @@ -14,11 +14,12 @@ define([ 'app', 'api', 'react', + 'react-dom', 'testUtils', 'addons/verifyinstall/constants', 'addons/verifyinstall/components.react' -], function (app, FauxtonAPI, React, testUtils, Constants, Components) { +], function (app, FauxtonAPI, React, ReactDOM, testUtils, Constants, Components) { FauxtonAPI.router = new FauxtonAPI.Router([]); var assert = testUtils.assert; @@ -43,7 +44,7 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('confirm all result fields blank before tests ran', function () { @@ -51,7 +52,7 @@ define([ el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallResults testResults={testResults} />, container); tests.forEach(function (test) { - assert.equal($(el.getDOMNode()).find('#' + test.id).html(), ''); + assert.equal($(ReactDOM.findDOMNode(el)).find('#' + test.id).html(), ''); }); }); @@ -68,7 +69,7 @@ define([ el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallResults testResults={copy} />, container); // now look at the DOM for that element. It should contain a tick char - assert.equal($(el.getDOMNode()).find('#' + test.id + ' span').html(), 'â'); + assert.equal($(ReactDOM.findDOMNode(el)).find('#' + test.id + ' span').html(), 'â'); }); }); @@ -85,7 +86,7 @@ define([ el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallResults testResults={copy} />, container); // now look at the DOM for that element. It should contain an error char - assert.equal($(el.getDOMNode()).find('#' + test.id + ' span').html(), 'â'); + assert.equal($(ReactDOM.findDOMNode(el)).find('#' + test.id + ' span').html(), 'â'); }); }); }); @@ -99,14 +100,14 @@ define([ }); afterEach(function () { - React.unmountComponentAtNode(container); + ReactDOM.unmountComponentAtNode(container); }); it('calls verify function on click', function () { var stub = { func: function () { } }; var spy = sinon.spy(stub, 'func'); el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={false} />, container); - ReactTestUtils.Simulate.click($(el.getDOMNode())[0]); + ReactTestUtils.Simulate.click($(ReactDOM.findDOMNode(el))[0]); assert.ok(spy.calledOnce); }); @@ -114,20 +115,20 @@ define([ var stub = { func: function () { } }; var spy = sinon.spy(stub, 'func'); el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={true} />, container); - ReactTestUtils.Simulate.click($(el.getDOMNode())[0]); + ReactTestUtils.Simulate.click($(ReactDOM.findDOMNode(el))[0]); assert.notOk(spy.calledOnce); }); it('shows appropriate default label', function () { var stub = { func: function () { } }; el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={false} />, container); - assert.equal($(el.getDOMNode()).html(), 'Verify Installation'); + assert.equal($(ReactDOM.findDOMNode(el)).html(), 'Verify Installation'); }); it('shows appropriate label during verification', function () { var stub = { func: function () { } }; el = ReactTestUtils.renderIntoDocument(<Components.VerifyInstallButton verify={stub.func} isVerifying={true} />, container); - assert.equal($(el.getDOMNode()).html(), 'Verifying'); + assert.equal($(ReactDOM.findDOMNode(el)).html(), 'Verifying'); }); }); http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/config.js ---------------------------------------------------------------------- diff --git a/app/config.js b/app/config.js index 8f289e6..8097509 100644 --- a/app/config.js +++ b/app/config.js @@ -35,6 +35,7 @@ require.config({ "velocity.ui": "../assets/js/plugins/velocity.ui", "react-autocomplete": "../assets/js/plugins/react-autocomplete", react: "../assets/js/libs/react", + 'react-dom': "../assets/js/libs/react-dom", flux: "../assets/js/libs/flux", "es5-shim": "../assets/js/libs/es5-shim", "css.escape": "../assets/js/libs/css.escape", http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/core/routeObject.js ---------------------------------------------------------------------- diff --git a/app/core/routeObject.js b/app/core/routeObject.js index 79f6f28..7e82dc1 100644 --- a/app/core/routeObject.js +++ b/app/core/routeObject.js @@ -13,9 +13,10 @@ define([ 'core/base', 'react', + 'react-dom', 'backbone' ], -function (FauxtonAPI, React, Backbone) { +function (FauxtonAPI, React, ReactDOM, Backbone) { var RouteObject = function (options) { this._options = options; @@ -135,7 +136,7 @@ function (FauxtonAPI, React, Backbone) { renderReactComponents: function () { _.each(this.reactComponents, function (componentInfo, selector) { if ($(selector)[0]) { - React.render(React.createElement(componentInfo.component, componentInfo.props), $(selector)[0]); + ReactDOM.render(React.createElement(componentInfo.component, componentInfo.props), $(selector)[0]); } }); }, @@ -260,7 +261,7 @@ function (FauxtonAPI, React, Backbone) { removeComponent: function (selector) { if (_.has(this.reactComponents, selector)) { if ($(selector)[0]) { - React.unmountComponentAtNode($(selector)[0]); + ReactDOM.unmountComponentAtNode($(selector)[0]); } this.reactComponents[selector] = null; delete this.reactComponents[selector]; http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/e6450a0d/app/core/tests/routeObjectSpec.js ---------------------------------------------------------------------- diff --git a/app/core/tests/routeObjectSpec.js b/app/core/tests/routeObjectSpec.js index bcb8760..d32de12 100644 --- a/app/core/tests/routeObjectSpec.js +++ b/app/core/tests/routeObjectSpec.js @@ -12,8 +12,9 @@ define([ 'api', 'react', + 'react-dom', 'testUtils' -], function (FauxtonAPI, React, testUtils) { +], function (FauxtonAPI, React, ReactDOM, testUtils) { var assert = testUtils.assert, restore = testUtils.restore, RouteObject = FauxtonAPI.RouteObject, @@ -196,11 +197,11 @@ define([ describe('removeComponent', function () { afterEach(function () { - restore(React.unmountComponentAtNode); + restore(ReactDOM.unmountComponentAtNode); }); it('removes existing components via React', function () { - var spy = sinon.stub(React, 'unmountComponentAtNode'); + var spy = sinon.stub(ReactDOM, 'unmountComponentAtNode'); var fakeSelector = 'remove-selector'; var container = document.createElement('div'); @@ -220,7 +221,7 @@ define([ }); it('removes existing components key', function () { - var spy = sinon.stub(React, 'unmountComponentAtNode'); + var spy = sinon.stub(ReactDOM, 'unmountComponentAtNode'); var fakeSelector = 'remove-selector'; testRouteObject.reactComponents[fakeSelector] = React.createElement('div'); @@ -231,7 +232,7 @@ define([ }); it('does nothing for non existing component', function () { - var spy = sinon.spy(React, 'unmountComponentAtNode'); + var spy = sinon.spy(ReactDOM, 'unmountComponentAtNode'); var fakeSelector = 'remove-selector'; testRouteObject.removeComponent(fakeSelector);