]> source.dussan.org Git - sonarqube.git/commitdiff
upgrade to react 0.14.0
authorStas Vilchik <vilchiks@gmail.com>
Tue, 27 Oct 2015 15:31:33 +0000 (16:31 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Tue, 27 Oct 2015 15:31:33 +0000 (16:31 +0100)
33 files changed:
server/sonar-web/gulp/scripts.js
server/sonar-web/package.json
server/sonar-web/src/main/js/apps/background-tasks/app.js
server/sonar-web/src/main/js/apps/background-tasks/search.js
server/sonar-web/src/main/js/apps/global-permissions/app.js
server/sonar-web/src/main/js/apps/overview/app.js
server/sonar-web/src/main/js/apps/overview/domain/timeline.js
server/sonar-web/src/main/js/apps/permission-templates/app.js
server/sonar-web/src/main/js/apps/permission-templates/permission-template.js
server/sonar-web/src/main/js/apps/project-permissions/app.js
server/sonar-web/src/main/js/apps/project-permissions/project.js
server/sonar-web/src/main/js/apps/project-permissions/search.js
server/sonar-web/src/main/js/apps/projects/app.js
server/sonar-web/src/main/js/apps/projects/search.js
server/sonar-web/src/main/js/apps/system/app.js
server/sonar-web/src/main/js/apps/system/item-log-level.js
server/sonar-web/src/main/js/apps/system/item-object.js
server/sonar-web/src/main/js/components/charts/mixins/resize-mixin.js
server/sonar-web/src/main/js/components/charts/mixins/tooltips-mixin.js
server/sonar-web/src/main/js/components/select-list/controls.jsx
server/sonar-web/src/main/js/main/nav/app.js
server/sonar-web/src/main/js/main/nav/component/component-nav.js
server/sonar-web/src/main/js/main/nav/global/global-nav-search.js
server/sonar-web/tests/apps/background-tasks-test.js
server/sonar-web/tests/apps/permission-templates-test.js
server/sonar-web/tests/apps/projects-test.js
server/sonar-web/tests/apps/system-test.js
server/sonar-web/tests/components/charts/bar-chart-test.js
server/sonar-web/tests/components/charts/bubble-chart-test.js
server/sonar-web/tests/components/charts/line-chart-test.js
server/sonar-web/tests/components/charts/treemap-test.js
server/sonar-web/tests/components/charts/work-cloud-test.js
server/sonar-web/tests/nav-test.js

index 644e64eeba31c967b40c4ed9239b7f1fc2aa6a73..c59dd002856d98db3d460eff452204a874dbace4 100644 (file)
@@ -75,6 +75,7 @@ module.exports.main = function (output, production, dev, watch) {
       function (bundle) {
         return bundle
             .require('react', { expose: 'react' })
+            .require('react-dom', { expose: 'react-dom' })
             .require('backbone', { expose: 'backbone' })
             .require('backbone.marionette', { expose: 'backbone.marionette' })
             .require('moment/min/moment-with-locales', { expose: 'moment' });
@@ -98,6 +99,7 @@ module.exports.apps = function (output, production, dev, watch, done) {
           function (bundle) {
             return bundle
                 .external('react')
+                .external('react-dom')
                 .external('backbone')
                 .external('backbone.marionette')
                 .external('moment');
@@ -118,6 +120,7 @@ module.exports.widgets = function (output, production, dev, watch) {
       function (bundle) {
         return bundle
             .external('react')
+            .external('react-dom')
             .external('backbone')
             .external('backbone.marionette')
             .require('moment/min/moment-with-locales', { expose: 'moment' })
@@ -156,4 +159,4 @@ module.exports.sonar = function (output, production) {
       .pipe(gulpif(production, buffer()))
       .pipe(gulpif(production, uglify()))
       .pipe(gulp.dest(path.join(output, 'js')));
-};
\ No newline at end of file
+};
index 7f2a33ad1716e12d6fc8d57b158dad9516b4702a..9a3c68700906d108dcf74f0d5507e9e142c37b78 100644 (file)
@@ -37,7 +37,9 @@
     "jsdom": "6.5.1",
     "mocha": "2.3.3",
     "moment": "2.10.6",
-    "react": "0.13.3",
+    "react": "^0.14.0",
+    "react-addons-test-utils": "^0.14.0",
+    "react-dom": "^0.14.0",
     "sinon": "1.15.4",
     "sinon-chai": "2.8.0",
     "underscore": "1.8.3",
index 268ca65e336208323eab3d65d875a789f2b614f4..9830bc967f0979fc9bb16d3794933abe2d8603d5 100644 (file)
@@ -1,7 +1,8 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import Main from './main';
 
 window.sonarqube.appStarted.then(options => {
   let el = document.querySelector(options.el);
-  React.render(<Main options={options}/>, el);
+  ReactDOM.render(<Main options={options}/>, el);
 });
index acd864f1b332cf535bf9664f73f581625ab6f739..f2d70c15cd7fc16019335f5d1aad43f9dea603ef 100644 (file)
@@ -44,8 +44,8 @@ export default React.createClass({
 
   onDateChange(newDate) {
     if (newDate === DATE.CUSTOM) {
-      let minDateRaw = React.findDOMNode(this.refs.minDate).value,
-          maxDateRaw = React.findDOMNode(this.refs.maxDate).value,
+      let minDateRaw = this.refs.minDate.value,
+          maxDateRaw = this.refs.maxDate.value,
           minDate = moment(minDateRaw, DATE_FORMAT, true),
           maxDate = moment(maxDateRaw, DATE_FORMAT, true);
       this.props.onDateChange(newDate,
@@ -68,8 +68,8 @@ export default React.createClass({
       onSelect: this.onDateInputChange
     };
     if ($.fn.datepicker) {
-      $(React.findDOMNode(this.refs.minDate)).datepicker(opts);
-      $(React.findDOMNode(this.refs.maxDate)).datepicker(opts);
+      $(this.refs.minDate).datepicker(opts);
+      $(this.refs.maxDate).datepicker(opts);
     }
   },
 
@@ -92,7 +92,7 @@ export default React.createClass({
   },
 
   onSearch() {
-    let searchInput = React.findDOMNode(this.refs.searchInput),
+    let searchInput = this.refs.searchInput,
         query = searchInput.value;
     this.props.onSearch(query);
   },
index f010e11b6e02a0091d53a4c722de0095a2b86db0..49a34472e744599662941297e6bcf191efb28cd8 100644 (file)
@@ -1,8 +1,9 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import Main from './main';
 import '../../helpers/handlebars-helpers';
 
 window.sonarqube.appStarted.then(options => {
   var el = document.querySelector(options.el);
-  React.render(<Main/>, el);
+  ReactDOM.render(<Main/>, el);
 });
index 29fabe96cd38a06f0f3515321a9fbc6a580019ff..f2912244670fa70fa84b70d1bd0306f3d4e27b8e 100644 (file)
@@ -1,6 +1,7 @@
 import $ from 'jquery';
 import _ from 'underscore';
 import React from 'react';
+import ReactDOM from 'react-dom';
 import { Overview } from './main';
 
 class App {
@@ -9,7 +10,7 @@ class App {
     _.extend(opts.component, options.component);
     $('html').toggleClass('dashboard-page', opts.component.hasSnapshot);
     let el = document.querySelector(opts.el);
-    React.render(<Overview {...opts}/>, el);
+    ReactDOM.render(<Overview {...opts}/>, el);
   }
 }
 
index baa63d6016c83d5fcf5e4460fa8e30f23ee578d6..cef1012c0126b08dcce028597dea79fcf4f10cdd 100644 (file)
@@ -62,7 +62,7 @@ export class DomainTimeline extends React.Component {
   }
 
   handleMetricChange () {
-    let metric = React.findDOMNode(this.refs.metricSelect).value;
+    let metric = this.refs.metricSelect.value;
     this.setState({ currentMetric: metric }, this.requestTimeMachineData);
   }
 
index aec705a28d66bc2f894fc5b47c989877bec56c9a..e8c443eb4e908d228773fffe002ddc07fe43c278 100644 (file)
@@ -1,8 +1,9 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import Main from './main';
 import '../../helpers/handlebars-helpers';
 
 window.sonarqube.appStarted.then(options => {
   var el = document.querySelector(options.el);
-  React.render(<Main topQualifiers={options.rootQualifiers}/>, el);
+  ReactDOM.render(<Main topQualifiers={options.rootQualifiers}/>, el);
 });
index a4814d570c01ec14f42a782b7106019a22d028b0..b821c7cc9a655b562cd89b10c837ba08b9ed1660 100644 (file)
@@ -69,6 +69,7 @@ export default React.createClass({
       return (
           <td key={p.key}>
             <table>
+              <tbody>
               <tr>
                 <td className="spacer-right">Users</td>
                 <td className="spacer-left bordered-left">{p.usersCount}</td>
@@ -85,6 +86,7 @@ export default React.createClass({
                      data-toggle="tooltip" href="#"></a>
                 </td>
               </tr>
+              </tbody>
             </table>
           </td>
       );
index 1c6f5645fc613500dfc42f8d424150201deca1e8..299c94f9bb7197ada19501d487195ac45c83d59a 100644 (file)
@@ -1,5 +1,6 @@
 import $ from 'jquery';
 import React from 'react';
+import ReactDOM from 'react-dom';
 import Main from './main';
 import '../../helpers/handlebars-helpers';
 
@@ -10,6 +11,6 @@ function requestPermissionTemplates () {
 window.sonarqube.appStarted.then(options => {
   requestPermissionTemplates().done(r => {
     var el = document.querySelector(options.el);
-    React.render(<Main permissionTemplates={r.permissionTemplates} componentId={options.componentId}/>, el);
+    ReactDOM.render(<Main permissionTemplates={r.permissionTemplates} componentId={options.componentId}/>, el);
   });
 });
index 57b87b71cbd074021d6ed8d396a63dbf0d47778a..ce1b9dae58c57b33d1f3a19ae788577a24d8b91b 100644 (file)
@@ -46,6 +46,7 @@ export default React.createClass({
       return (
           <td key={p.key}>
             <table>
+              <tbody>
               <tr>
                 <td className="spacer-right">Users</td>
                 <td className="spacer-left bordered-left">{p.usersCount}</td>
@@ -62,6 +63,7 @@ export default React.createClass({
                      data-toggle="tooltip" href="#"></a>
                 </td>
               </tr>
+              </tbody>
             </table>
           </td>
       );
index dfc243f86363b927bb2d1f5a96fcc9255fbc782e..d50bf8255fd164ad30eb1812701e8d940834008a 100644 (file)
@@ -16,7 +16,7 @@ export default React.createClass({
   },
 
   search() {
-    let q = React.findDOMNode(this.refs.input).value;
+    let q = this.refs.input.value;
     this.props.search(q);
   },
 
index 917d7342adc351bf8cca348079e2ff58a598122d..627a8a9b9cdbd98c7a1e550f5f4411bce64e0ff5 100644 (file)
@@ -1,4 +1,5 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import Main from './main';
 import {getCurrentUser} from '../../api/users';
 import '../../helpers/handlebars-helpers';
@@ -8,7 +9,7 @@ window.sonarqube.appStarted.then(options => {
     let el = document.querySelector(options.el),
         hasProvisionPermission = user.permissions.global.indexOf('provisioning') !== -1,
         topLevelQualifiers = options.rootQualifiers;
-    React.render(<Main hasProvisionPermission={hasProvisionPermission}
+    ReactDOM.render(<Main hasProvisionPermission={hasProvisionPermission}
                        topLevelQualifiers={topLevelQualifiers}/>, el);
   });
 });
index 5c5668af1e5895b0cc8a2936c68ff0780d605813..a5cebad2a63604c0d977ae89eb3e8fd3650203c1 100644 (file)
@@ -16,7 +16,7 @@ export default React.createClass({
   },
 
   search() {
-    let q = React.findDOMNode(this.refs.input).value;
+    let q = this.refs.input.value;
     this.props.onSearch(q);
   },
 
@@ -86,6 +86,7 @@ export default React.createClass({
     return (
         <div className="panel panel-vertical bordered-bottom spacer-bottom">
           <table className="data">
+            <tbody>
             <tr>
               <td className="thin text-middle">
                 {this.renderCheckbox()}
@@ -110,6 +111,7 @@ export default React.createClass({
                 </button>
               </td>
             </tr>
+            </tbody>
           </table>
           {this.renderGhostsDescription()}
         </div>
index b4b9a61c4a6e6a8bd71f0b52c83c04f4ddf8446c..201edde42708ce7596b3f4a075f991535a08de57 100644 (file)
@@ -1,9 +1,10 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import Main from './main';
 
 window.sonarqube.appStarted.then(options => {
   var el = document.querySelector(options.el);
-  React.render(<Main/>, el);
+  ReactDOM.render(<Main/>, el);
 });
 
 
index 3e924a2781ef94e6007f90c52b90eb427fb3723f..2ca73615e1baa3e52b710560b06265ac663e38e3 100644 (file)
@@ -9,7 +9,7 @@ export default React.createClass({
   },
 
   onChange() {
-    let newValue = React.findDOMNode(this.refs.select).value;
+    let newValue = this.refs.select.value;
     setLogLevel(newValue).then(() => {
       this.setState({ level: newValue });
     });
index 15583def4bb543478e7ad0d88adee9a18dd99ab9..4260abc60c3947be5f774e01356c29de3257e288 100644 (file)
@@ -9,6 +9,6 @@ export default React.createClass({
         <td><ItemValue value={this.props.value[key]}/></td>
       </tr>;
     });
-    return <table className="data">{rows}</table>;
+    return <table className="data"><tbody>{rows}</tbody></table>;
   }
 });
index 206cb90f3555cf647d1698d7cf639d9255765c6d..ebd7360fe0776a3828fe9625341e59e222a2fc72 100644 (file)
@@ -1,4 +1,5 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 
 export const ResizeMixin = {
   componentDidMount () {
@@ -15,7 +16,7 @@ export const ResizeMixin = {
   },
 
   handleResize () {
-    let boundingClientRect = React.findDOMNode(this).parentNode.getBoundingClientRect();
+    let boundingClientRect = ReactDOM.findDOMNode(this).parentNode.getBoundingClientRect();
     let newWidth = this.props.width || boundingClientRect.width;
     let newHeight = this.props.height || boundingClientRect.height;
     this.setState({ width: newWidth, height: newHeight });
index 1fcfc6add8924680c634cec53b2113365ff011b5..240edee02c5c8eb5770fac4bce52b90848a9ecb8 100644 (file)
@@ -1,5 +1,6 @@
 import $ from 'jquery';
 import React from 'react';
+import ReactDOM from 'react-dom';
 
 export const TooltipsMixin = {
   componentDidMount () {
@@ -12,7 +13,7 @@ export const TooltipsMixin = {
 
   initTooltips () {
     if ($.fn.tooltip) {
-      $('[data-toggle="tooltip"]', React.findDOMNode(this))
+      $('[data-toggle="tooltip"]', ReactDOM.findDOMNode(this))
           .tooltip({ container: 'body', placement: 'bottom', html: true });
     }
   }
index e351fb012299bec1f933f378e99212843ddee98a..3165c9d5ccacf890c569049c2907e0f2dff71a70 100644 (file)
@@ -8,7 +8,7 @@ export default React.createClass({
   },
 
   search() {
-    let query = React.findDOMNode(this.refs.search).value;
+    let query = this.refs.search.value;
     this.props.search(query);
   },
 
index 93b54d6a3cdc8b41727bba210fe2c3d4b7d37439..14576f59cdd89f49334f619d7d663e07a6358e5a 100644 (file)
@@ -1,4 +1,5 @@
 import React from 'react';
+import ReactDOM from 'react-dom';
 import GlobalNav from './global/global-nav';
 import ComponentNav from './component/component-nav';
 import SettingsNav from './settings/settings-nav';
@@ -36,7 +37,7 @@ export default class App {
     return getGlobalNavigation().then(r => {
       const el = document.getElementById('global-navigation');
       if (el) {
-        React.render(<GlobalNav {...options} {...r}/>, el);
+        ReactDOM.render(<GlobalNav {...options} {...r}/>, el);
       }
       return r;
     });
@@ -46,7 +47,7 @@ export default class App {
     return getComponentNavigation(options.componentKey).then(r => {
       const el = document.getElementById('context-navigation');
       if (el) {
-        React.render(<ComponentNav component={r} conf={r.configuration || {}}/>, el);
+        ReactDOM.render(<ComponentNav component={r} conf={r.configuration || {}}/>, el);
       }
       return r;
     });
@@ -56,7 +57,7 @@ export default class App {
     return getSettingsNavigation().then(r => {
       const el = document.getElementById('context-navigation');
       if (el) {
-        React.render(<SettingsNav {...options}/>, el);
+        ReactDOM.render(<SettingsNav {...options}/>, el);
       }
       return r;
     });
index f4c6ee1c976e145c84296a14771d132875151acc..9b1140f1834e37f57921605f18f8953ed737b832 100644 (file)
@@ -1,6 +1,7 @@
 import $ from 'jquery';
 import _ from 'underscore';
 import React from 'react';
+import ReactDOM from 'react-dom';
 import {STATUSES} from '../../../apps/background-tasks/constants';
 import {getTasksForComponent} from '../../../api/ce';
 import ComponentNavFavorite from './component-nav-favorite';
@@ -33,7 +34,7 @@ export default React.createClass({
   },
 
   initTooltips() {
-    $('[data-toggle="tooltip"]', React.findDOMNode(this)).tooltip({
+    $('[data-toggle="tooltip"]', ReactDOM.findDOMNode(this)).tooltip({
       container: 'body',
       placement: 'bottom',
       delay: { show: 0, hide: 1000 },
index f717bf37122af811abf29f6d40eb05fd80d79827..6e09db5690688f20ee4280c972d3cce1e4bc31c9 100644 (file)
@@ -41,7 +41,7 @@ export default React.createClass({
   },
 
   renderSearchView() {
-    let searchContainer = React.findDOMNode(this.refs.container);
+    let searchContainer = this.refs.container;
     this.searchView = new SearchView({
       model: new Backbone.Model(this.props),
       hide: this.closeSearch
@@ -65,7 +65,7 @@ export default React.createClass({
   },
 
   onClickOutside(e) {
-    if (!contains(React.findDOMNode(this.refs.dropdown), e.target)) {
+    if (!contains(this.refs.dropdown, e.target)) {
       this.closeSearch();
     }
   },
index 6e79e2d7f712c34497500d1f52bd3d4b1629a806..15ac381e2a01f7facffb3bccc32749969edea1c4 100644 (file)
@@ -1,5 +1,8 @@
 /* eslint no-unused-expressions: 0 */
-import React from 'react/addons';
+import React from 'react';
+import ReactDOM from 'react-dom';
+import TestUtils from 'react-addons-test-utils';
+
 import Header from '../../src/main/js/apps/background-tasks/header';
 import Stats from '../../src/main/js/apps/background-tasks/stats';
 import Search from '../../src/main/js/apps/background-tasks/search';
@@ -7,7 +10,6 @@ import Tasks from '../../src/main/js/apps/background-tasks/tasks';
 import {STATUSES, CURRENTS, DEBOUNCE_DELAY} from '../../src/main/js/apps/background-tasks/constants';
 import {formatDuration} from '../../src/main/js/apps/background-tasks/helpers';
 
-let TestUtils = React.addons.TestUtils;
 let chai = require('chai');
 let expect = chai.expect;
 let sinon = require('sinon');
@@ -63,7 +65,7 @@ describe('Background Tasks', function () {
                                                            onCurrentsChange={spy}
                                                            onDateChange={spy}
                                                            onSearch={searchSpy}/>);
-      let searchInput = React.findDOMNode(TestUtils.findRenderedDOMComponentWithClass(component, 'search-box-input'));
+      let searchInput = ReactDOM.findDOMNode(TestUtils.findRenderedDOMComponentWithClass(component, 'search-box-input'));
       searchInput.value = 'some search query';
       TestUtils.Simulate.change(searchInput);
       setTimeout(() => {
@@ -80,7 +82,7 @@ describe('Background Tasks', function () {
                                                            onCurrentsChange={spy}
                                                            onDateChange={spy}
                                                            refresh={reloadSpy}/>);
-      let reloadButton = React.findDOMNode(component.refs.reloadButton);
+      let reloadButton = component.refs.reloadButton;
       expect(reloadSpy).to.not.have.been.called;
       TestUtils.Simulate.click(reloadButton);
       expect(reloadSpy).to.have.been.called;
@@ -91,32 +93,32 @@ describe('Background Tasks', function () {
     describe('Pending', () => {
       it('should show zero pending', () => {
         let result = TestUtils.renderIntoDocument(<Stats pendingCount="0"/>),
-            pendingCounter = React.findDOMNode(result.refs.pendingCount);
+            pendingCounter = result.refs.pendingCount;
         expect(pendingCounter.textContent).to.contain('0');
       });
 
       it('should show 5 pending', () => {
         let result = TestUtils.renderIntoDocument(<Stats pendingCount="5"/>),
-            pendingCounter = React.findDOMNode(result.refs.pendingCount);
+            pendingCounter = result.refs.pendingCount;
         expect(pendingCounter.textContent).to.contain('5');
       });
 
       it('should not show cancel pending button', () => {
         let result = TestUtils.renderIntoDocument(<Stats pendingCount="0"/>),
-            cancelPending = React.findDOMNode(result.refs.cancelPending);
+            cancelPending = result.refs.cancelPending;
         expect(cancelPending).to.not.be.ok;
       });
 
       it('should show cancel pending button', () => {
         let result = TestUtils.renderIntoDocument(<Stats pendingCount="5"/>),
-            cancelPending = React.findDOMNode(result.refs.cancelPending);
+            cancelPending = result.refs.cancelPending;
         expect(cancelPending).to.be.ok;
       });
 
       it('should trigger cancelling pending', () => {
         let spy = sinon.spy();
         let result = TestUtils.renderIntoDocument(<Stats pendingCount="5" cancelPending={spy}/>),
-            cancelPending = React.findDOMNode(result.refs.cancelPending);
+            cancelPending = result.refs.cancelPending;
         expect(spy).to.not.have.been.called;
         TestUtils.Simulate.click(cancelPending);
         expect(spy).to.have.been.called;
@@ -126,32 +128,32 @@ describe('Background Tasks', function () {
     describe('Failures', () => {
       it('should show zero failures', () => {
         let result = TestUtils.renderIntoDocument(<Stats failuresCount="0"/>),
-            failureCounter = React.findDOMNode(result.refs.failureCount);
+            failureCounter = result.refs.failureCount;
         expect(failureCounter.textContent).to.contain('0');
       });
 
       it('should show 5 failures', () => {
         let result = TestUtils.renderIntoDocument(<Stats failuresCount="5"/>),
-            failureCounter = React.findDOMNode(result.refs.failureCount);
+            failureCounter = result.refs.failureCount;
         expect(failureCounter.textContent).to.contain('5');
       });
 
       it('should not show link to failures', () => {
         let result = TestUtils.renderIntoDocument(<Stats failuresCount="0"/>),
-            failureCounter = React.findDOMNode(result.refs.failureCount);
+            failureCounter = result.refs.failureCount;
         expect(failureCounter.tagName.toLowerCase()).to.not.equal('a');
       });
 
       it('should show link to failures', () => {
         let result = TestUtils.renderIntoDocument(<Stats failuresCount="5"/>),
-            failureCounter = React.findDOMNode(result.refs.failureCount);
+            failureCounter = result.refs.failureCount;
         expect(failureCounter.tagName.toLowerCase()).to.equal('a');
       });
 
       it('should trigger filtering failures', () => {
         let spy = sinon.spy();
         let result = TestUtils.renderIntoDocument(<Stats failuresCount="5" showFailures={spy}/>),
-            failureCounter = React.findDOMNode(result.refs.failureCount);
+            failureCounter = result.refs.failureCount;
         expect(spy).to.not.have.been.called;
         TestUtils.Simulate.click(failureCounter);
         expect(spy).to.have.been.called;
@@ -161,19 +163,19 @@ describe('Background Tasks', function () {
     describe('In Progress Duration', () => {
       it('should show duration', () => {
         let result = TestUtils.renderIntoDocument(<Stats inProgressDuration="173"/>),
-            inProgressDuration = React.findDOMNode(result.refs.inProgressDuration);
+            inProgressDuration = result.refs.inProgressDuration;
         expect(inProgressDuration.textContent).to.include('173ms');
       });
 
       it('should format duration', () => {
         let result = TestUtils.renderIntoDocument(<Stats inProgressDuration="1073"/>),
-            inProgressDuration = React.findDOMNode(result.refs.inProgressDuration);
+            inProgressDuration = result.refs.inProgressDuration;
         expect(inProgressDuration.textContent).to.include('1s');
       });
 
       it('should not show duration', () => {
         let result = TestUtils.renderIntoDocument(<Stats/>),
-            inProgressDuration = React.findDOMNode(result.refs.inProgressDuration);
+            inProgressDuration = result.refs.inProgressDuration;
         expect(inProgressDuration).to.not.be.ok;
       });
     });
index b79adde98a507de097da7deabbd6fdbf645b9331..be99e6f54fd60d6cd2edefe8c604c64a836dcd2d 100644 (file)
@@ -1,9 +1,10 @@
 /* eslint no-unused-expressions: 0 */
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+
 import Defaults from '../../src/main/js/apps/permission-templates/permission-template-defaults';
 import SetDefaults from '../../src/main/js/apps/permission-templates/permission-template-set-defaults';
 
-let TestUtils = React.addons.TestUtils;
 let expect = require('chai').expect;
 let sinon = require('sinon');
 
index 0bb891f74963fc8ae33685b173bcabfee12b6b0e..3fb1768df84901a84ef4e0827abb4b0038bc0254 100644 (file)
@@ -1,7 +1,8 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+
 import Projects from '../../src/main/js/apps/projects/projects';
 
-let TestUtils = React.addons.TestUtils;
 let expect = require('chai').expect;
 let sinon = require('sinon');
 
index 1d2aa97bf9792f5ae0f2e61d0201a584069275a6..a7a9c529d2dea36147d678c5db07ce134cfbde4f 100644 (file)
@@ -1,7 +1,9 @@
-import React from 'react/addons';
+import React from 'react';
+import ReactDOM from 'react-dom';
+import TestUtils from 'react-addons-test-utils';
+
 import ItemValue from '../../src/main/js/apps/system/item-value';
 
-let TestUtils = React.addons.TestUtils;
 let expect = require('chai').expect;
 let sinon = require('sinon');
 
@@ -10,7 +12,7 @@ describe('System', function () {
   describe('Item Value', function () {
     it('should render string', () => {
       let result = TestUtils.renderIntoDocument(<ItemValue value="/some/path/as/an/example"/>);
-      let content = React.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(result, 'code'));
+      let content = ReactDOM.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(result, 'code'));
       expect(content.textContent).to.equal('/some/path/as/an/example');
     });
 
@@ -68,7 +70,7 @@ describe('System', function () {
 
     it('should set initial value', () => {
       let result = TestUtils.renderIntoDocument(<ItemValue value="DEBUG" name="Logs Level"/>);
-      let select = React.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(result, 'select'));
+      let select = ReactDOM.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(result, 'select'));
       expect(select.value).to.equal('DEBUG');
     });
 
@@ -84,7 +86,7 @@ describe('System', function () {
 
     it('should change value', () => {
       let result = TestUtils.renderIntoDocument(<ItemValue value="INFO" name="Logs Level"/>);
-      let select = React.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(result, 'select'));
+      let select = ReactDOM.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(result, 'select'));
       select.value = 'TRACE';
       TestUtils.Simulate.change(select);
       expect(fetchUrl).to.equal('/api/system/change_log_level');
index d2cc1f7784a5f8bd73d4b5df0860ba82bad83c45..894d02a483e92601b0033904e538e9e7bbb03dee 100644 (file)
@@ -1,12 +1,10 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
 import { expect } from 'chai';
 
 import { BarChart } from '../../../src/main/js/components/charts/bar-chart';
 
 
-let TestUtils = React.addons.TestUtils;
-
-
 describe('Bar Chart', function () {
 
   it('should display bars', function () {
index fd09799ac1d492243b272ec887ccab3ca8a91011..f9994eacd5464014dc725628da77d0701f7efd73 100644 (file)
@@ -1,12 +1,10 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
 import { expect } from 'chai';
 
 import { BubbleChart } from '../../../src/main/js/components/charts/bubble-chart';
 
 
-let TestUtils = React.addons.TestUtils;
-
-
 describe('Bubble Chart', function () {
 
   it('should display bubbles', function () {
index a8fecef1ffdb6cae4dba4bd6b1d0a6a69c2907b7..5e6ee4175b35b1c48d9276de39a944f21c1e93e3 100644 (file)
@@ -1,12 +1,10 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
 import { expect } from 'chai';
 
 import { LineChart } from '../../../src/main/js/components/charts/line-chart';
 
 
-let TestUtils = React.addons.TestUtils;
-
-
 describe('Line Chart', function () {
 
   it('should display line', function () {
index 31b838c39047d50411ce797618103039bcd3d227..f5322ed26a0321e9fc0c421633d75728639b6741 100644 (file)
@@ -1,12 +1,10 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
 import { expect } from 'chai';
 
 import { Treemap } from '../../../src/main/js/components/charts/treemap';
 
 
-let TestUtils = React.addons.TestUtils;
-
-
 describe('Treemap', function () {
 
   it('should display', function () {
index 9d904c4fd298cfa7cb66ddb43db8f58f3a29ed89..4bdafe1d47276cb7c79e827fa37ba8f75127e231 100644 (file)
@@ -1,12 +1,10 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
 import { expect } from 'chai';
 
 import { WordCloud } from '../../../src/main/js/components/charts/word-cloud';
 
 
-let TestUtils = React.addons.TestUtils;
-
-
 describe('Word Cloud', function () {
 
   it('should display', function () {
index c06cfa817230f167494002a7714883ac3912fa06..fc9f18eaaff9243d44d46e039ea53a5585725186 100644 (file)
@@ -1,16 +1,13 @@
-import React from 'react/addons';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
 import ComponentNavBreadcrumbs from '../src/main/js/main/nav/component/component-nav-breadcrumbs';
 
-let TestUtils = React.addons.TestUtils;
+
 let expect = require('chai').expect;
 
+
 describe('Nav', function () {
   describe('ComponentNavBreadcrumbs', () => {
-    it('should not render unless `props.breadcrumbs`', function () {
-      var result = React.renderToStaticMarkup(React.createElement(ComponentNavBreadcrumbs, null));
-      expect(result).to.equal('<noscript></noscript>');
-    });
-
     it('should not render breadcrumbs with one element', function () {
       var breadcrumbs = [
         { key: 'my-project', name: 'My Project', qualifier: 'TRK' }