diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2015-08-26 12:18:52 +0200 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2015-08-26 13:32:52 +0200 |
commit | 0ed0fff9863770f14642bb949f2f97cc9f05bb5b (patch) | |
tree | e17b2363c819800fee03d71973e7584a305b7e48 | |
parent | 60beed6bb2b38b2d31f6db27d5b84bd6189a8d98 (diff) | |
download | sonarqube-0ed0fff9863770f14642bb949f2f97cc9f05bb5b.tar.gz sonarqube-0ed0fff9863770f14642bb949f2f97cc9f05bb5b.zip |
install mocha tests for reactjs components
-rw-r--r-- | server/sonar-web/.eslintignore | 1 | ||||
-rw-r--r-- | server/sonar-web/.eslintrc | 3 | ||||
-rw-r--r-- | server/sonar-web/package.json | 8 | ||||
-rw-r--r-- | server/sonar-web/src/main/js/components/shared/favorite.jsx | 5 | ||||
-rw-r--r-- | server/sonar-web/tests/components/shared/favorite-test.js | 34 | ||||
-rw-r--r-- | server/sonar-web/tests/testdom.js | 7 |
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' }; +} |