]> source.dussan.org Git - sonarqube.git/commitdiff
install mocha tests for reactjs components
authorStas Vilchik <vilchiks@gmail.com>
Wed, 26 Aug 2015 10:18:52 +0000 (12:18 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Wed, 26 Aug 2015 11:32:52 +0000 (13:32 +0200)
server/sonar-web/.eslintignore
server/sonar-web/.eslintrc
server/sonar-web/package.json
server/sonar-web/src/main/js/components/shared/favorite.jsx
server/sonar-web/tests/components/shared/favorite-test.js [new file with mode: 0644]
server/sonar-web/tests/testdom.js [new file with mode: 0644]

index 681af342526ace04d6abe0bec956f3e7105b81f3..e9ab1b64f2675f2b7fc2b19f6cccaeb1b8f99564 100644 (file)
@@ -1 +1,2 @@
 src/main/js/libs/third-party
+tests/
index 00b2641ae4870077b0d92d40f08571452315ed42..87df51247ec1a6d734ddb5c352cf2d460078ff76 100644 (file)
@@ -1,7 +1,8 @@
 {
   "env": {
     "browser": true,
-    "es6": true
+    "es6": true,
+    "node": true
   },
   "ecmaFeatures": {
     "modules": true,
index 3fb2d923e8efd7ef6ddea70a24ca09e43e60c479..56904dde7514a04c5f2bce1a030a1cc568d61bce 100644 (file)
@@ -2,6 +2,10 @@
   "name": "SonarQube",
   "version": "0.0.1",
   "devDependencies": {
+    "chai": "^3.2.0",
+    "eslint": "^1.2.1",
+    "eslint-plugin-bdd": "^1.1.0",
+    "eslint-plugin-mocha": "^0.5.1",
     "grunt": "0.4.5",
     "grunt-babel": "5.0.1",
     "grunt-cli": "0.1.13",
@@ -18,6 +22,9 @@
     "grunt-uglify-parallel": "0.0.1",
     "intern": "^3.0.0-rc.1",
     "jit-grunt": "0.9.1",
+    "jquery": "^2.1.4",
+    "jsdom": "^3.1.1",
+    "mocha-eslint": "^1.0.0",
     "sinon": "^1.15.4",
     "time-grunt": "1.2.1"
   },
@@ -27,6 +34,7 @@
     "build-test": "./node_modules/.bin/grunt build-test",
     "build-coverage": "./node_modules/.bin/grunt build-coverage",
     "test": "./node_modules/.bin/grunt test",
+    "mocha": "./node_modules/.bin/mocha --compilers js:babel/register --require tests/testdom tests/**/*-test.js",
     "coverage": "./node_modules/.bin/grunt coverage"
   }
 }
index 09601d31cd1d85228532651f2144e64f1d6390d8..6fb54a584169291ec31e8b186738ab797f708a7f 100644 (file)
@@ -1,7 +1,6 @@
+import $ from 'jquery';
 import React from 'react';
 
-let $ = jQuery;
-
 export default React.createClass({
   propTypes: {
     component: React.PropTypes.string.isRequired,
@@ -34,7 +33,7 @@ export default React.createClass({
           <path d="M15.4275,5.77678C15.4275,5.90773 15.3501,6.05059 15.1953,6.20536L11.9542,9.36608L12.7221,13.8304C12.728,13.872 12.731,13.9316 12.731,14.0089C12.731,14.1339 12.6998,14.2396 12.6373,14.3259C12.5748,14.4122 12.484,14.4554 12.3649,14.4554C12.2518,14.4554 12.1328,14.4197 12.0078,14.3482L7.99888,12.2411L3.98995,14.3482C3.85901,14.4197 3.73996,14.4554 3.63281,14.4554C3.50781,14.4554 3.41406,14.4122 3.35156,14.3259C3.28906,14.2396 3.25781,14.1339 3.25781,14.0089C3.25781,13.9732 3.26377,13.9137 3.27567,13.8304L4.04353,9.36608L0.793531,6.20536C0.644719,6.04464 0.570313,5.90178 0.570313,5.77678C0.570313,5.55654 0.736979,5.41964 1.07031,5.36606L5.55245,4.71428L7.56138,0.651781C7.67447,0.407729 7.8203,0.285703 7.99888,0.285703C8.17745,0.285703 8.32328,0.407729 8.43638,0.651781L10.4453,4.71428L14.9274,5.36606C15.2608,5.41964 15.4274,5.55654 15.4274,5.77678L15.4275,5.77678Z"
                 style={{ fillRule: 'nonzero' }}/>
         </svg>
-    )
+    );
   },
 
   render() {
diff --git a/server/sonar-web/tests/components/shared/favorite-test.js b/server/sonar-web/tests/components/shared/favorite-test.js
new file mode 100644 (file)
index 0000000..8730bc6
--- /dev/null
@@ -0,0 +1,34 @@
+var expect = require('chai').expect;
+
+var React = require('react/addons');
+var Favorite = require('../../../src/main/js/components/shared/favorite');
+var TestUtils = React.addons.TestUtils;
+
+describe('Favorite', function () {
+  it('should render svg', function () {
+    var favorite = TestUtils.renderIntoDocument(
+        <Favorite component="id" favorite={false}/>
+    );
+
+    expect(TestUtils.findRenderedDOMComponentWithTag(favorite, 'svg')).to.be.ok;
+    expect(TestUtils.findRenderedDOMComponentWithTag(favorite, 'path')).to.be.ok;
+  });
+
+  it('should render not favorite', function () {
+    var favorite = TestUtils.renderIntoDocument(
+        <Favorite component="id" favorite={false}/>
+    );
+
+    var link = TestUtils.findRenderedDOMComponentWithTag(favorite, 'a');
+    expect(link.getDOMNode().className).to.equal('icon-star');
+  });
+
+  it('should render favorite', function () {
+    var favorite = TestUtils.renderIntoDocument(
+        <Favorite component="id" favorite={true}/>
+    );
+
+    var link = TestUtils.findRenderedDOMComponentWithTag(favorite, 'a');
+    expect(link.getDOMNode().className).to.equal('icon-star icon-star-favorite');
+  });
+});
diff --git a/server/sonar-web/tests/testdom.js b/server/sonar-web/tests/testdom.js
new file mode 100644 (file)
index 0000000..4ff53a9
--- /dev/null
@@ -0,0 +1,7 @@
+if (typeof document === 'undefined') {
+  var jsdom = require('jsdom').jsdom;
+  var markup = '<html><body></body></html>';
+  global.document = jsdom(markup);
+  global.window = document.parentWindow;
+  global.navigator = { userAgent: 'node.js' };
+}