aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2015-08-26 12:18:52 +0200
committerStas Vilchik <vilchiks@gmail.com>2015-08-26 13:32:52 +0200
commit0ed0fff9863770f14642bb949f2f97cc9f05bb5b (patch)
treee17b2363c819800fee03d71973e7584a305b7e48
parent60beed6bb2b38b2d31f6db27d5b84bd6189a8d98 (diff)
downloadsonarqube-0ed0fff9863770f14642bb949f2f97cc9f05bb5b.tar.gz
sonarqube-0ed0fff9863770f14642bb949f2f97cc9f05bb5b.zip
install mocha tests for reactjs components
-rw-r--r--server/sonar-web/.eslintignore1
-rw-r--r--server/sonar-web/.eslintrc3
-rw-r--r--server/sonar-web/package.json8
-rw-r--r--server/sonar-web/src/main/js/components/shared/favorite.jsx5
-rw-r--r--server/sonar-web/tests/components/shared/favorite-test.js34
-rw-r--r--server/sonar-web/tests/testdom.js7
6 files changed, 54 insertions, 4 deletions
diff --git a/server/sonar-web/.eslintignore b/server/sonar-web/.eslintignore
index 681af342526..e9ab1b64f26 100644
--- a/server/sonar-web/.eslintignore
+++ b/server/sonar-web/.eslintignore
@@ -1 +1,2 @@
src/main/js/libs/third-party
+tests/
diff --git a/server/sonar-web/.eslintrc b/server/sonar-web/.eslintrc
index 00b2641ae48..87df51247ec 100644
--- a/server/sonar-web/.eslintrc
+++ b/server/sonar-web/.eslintrc
@@ -1,7 +1,8 @@
{
"env": {
"browser": true,
- "es6": true
+ "es6": true,
+ "node": true
},
"ecmaFeatures": {
"modules": true,
diff --git a/server/sonar-web/package.json b/server/sonar-web/package.json
index 3fb2d923e8e..56904dde751 100644
--- a/server/sonar-web/package.json
+++ b/server/sonar-web/package.json
@@ -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"
}
}
diff --git a/server/sonar-web/src/main/js/components/shared/favorite.jsx b/server/sonar-web/src/main/js/components/shared/favorite.jsx
index 09601d31cd1..6fb54a58416 100644
--- a/server/sonar-web/src/main/js/components/shared/favorite.jsx
+++ b/server/sonar-web/src/main/js/components/shared/favorite.jsx
@@ -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
index 00000000000..8730bc6d603
--- /dev/null
+++ b/server/sonar-web/tests/components/shared/favorite-test.js
@@ -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
index 00000000000..4ff53a9a812
--- /dev/null
+++ b/server/sonar-web/tests/testdom.js
@@ -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' };
+}