From 0ed0fff9863770f14642bb949f2f97cc9f05bb5b Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Wed, 26 Aug 2015 12:18:52 +0200 Subject: install mocha tests for reactjs components --- server/sonar-web/.eslintignore | 1 + server/sonar-web/.eslintrc | 3 +- server/sonar-web/package.json | 8 +++++ .../src/main/js/components/shared/favorite.jsx | 5 ++-- .../tests/components/shared/favorite-test.js | 34 ++++++++++++++++++++++ server/sonar-web/tests/testdom.js | 7 +++++ 6 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 server/sonar-web/tests/components/shared/favorite-test.js create mode 100644 server/sonar-web/tests/testdom.js 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({ - ) + ); }, 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( + + ); + + 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( + + ); + + var link = TestUtils.findRenderedDOMComponentWithTag(favorite, 'a'); + expect(link.getDOMNode().className).to.equal('icon-star'); + }); + + it('should render favorite', function () { + var favorite = TestUtils.renderIntoDocument( + + ); + + 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 = ''; + global.document = jsdom(markup); + global.window = document.parentWindow; + global.navigator = { userAgent: 'node.js' }; +} -- cgit v1.2.3