diff --git a/.jshintignore b/.jshintignore index 196c64b..ce81fa9 100644 --- a/.jshintignore +++ b/.jshintignore @@ -1,3 +1,4 @@ +coverage/ node_modules/ public/ vendor/ diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..2c22b3b --- /dev/null +++ b/.jshintrc @@ -0,0 +1,10 @@ +{ + "node": true, + "curly": true, + "latedef": true, + "quotmark": true, + "undef": true, + "unused": true, + "trailing": true, + "predef": ["chrome"] +} diff --git a/assets/js/app.jsx b/assets/js/app.jsx index 19cbf2a..645eb08 100644 --- a/assets/js/app.jsx +++ b/assets/js/app.jsx @@ -1,3 +1,5 @@ +/** @jsx React.DOM */ + /* This is a fix for Bootstrap requiring jQuery */ global.jQuery = require('jquery'); require('bootstrap'); diff --git a/assets/js/components/Alert.jsx b/assets/js/components/Alert.jsx index c4d0328..394e7d2 100644 --- a/assets/js/components/Alert.jsx +++ b/assets/js/components/Alert.jsx @@ -1,3 +1,5 @@ +/** @jsx React.DOM */ + var React = require('react'); var classNames = require('classnames'); diff --git a/assets/js/components/MainList.jsx b/assets/js/components/MainList.jsx index 537c122..dec4b4d 100644 --- a/assets/js/components/MainList.jsx +++ b/assets/js/components/MainList.jsx @@ -1,4 +1,4 @@ -/* global chrome */ +/** global chrome */ var React = require('react'); diff --git a/assets/js/components/Navbar.jsx b/assets/js/components/Navbar.jsx index a43283c..c0d25c9 100644 --- a/assets/js/components/Navbar.jsx +++ b/assets/js/components/Navbar.jsx @@ -1,3 +1,5 @@ +/** @jsx React.DOM */ + var React = require('react'); var Navbar = React.createClass({ diff --git a/assets/js/components/Options.jsx b/assets/js/components/Options.jsx index 5753d56..6cbe593 100644 --- a/assets/js/components/Options.jsx +++ b/assets/js/components/Options.jsx @@ -1,4 +1,4 @@ -/* global chrome */ +/** global chrome */ var React = require('react'); var ReactAddons = require('react/addons'); diff --git a/assets/js/components/SitesList.jsx b/assets/js/components/SitesList.jsx index ad0b08c..d0ceb62 100644 --- a/assets/js/components/SitesList.jsx +++ b/assets/js/components/SitesList.jsx @@ -1,3 +1,5 @@ +/** @jsx React.DOM */ + var React = require('react'); var SitesList = React.createClass({ diff --git a/assets/js/components/WakaTime.jsx b/assets/js/components/WakaTime.jsx index e773b96..1d64207 100644 --- a/assets/js/components/WakaTime.jsx +++ b/assets/js/components/WakaTime.jsx @@ -1,4 +1,4 @@ -/* global chrome */ +/** global chrome */ var React = require("react"); var $ = require('jquery'); diff --git a/assets/js/options.jsx b/assets/js/options.jsx index 20316d1..a2c5e81 100644 --- a/assets/js/options.jsx +++ b/assets/js/options.jsx @@ -1,3 +1,5 @@ +/** @jsx React.DOM */ + /* This is a fix for Bootstrap requiring jQuery */ global.jQuery = require('jquery'); require('bootstrap'); diff --git a/package.json b/package.json index 6fe7fe2..36ace50 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "testFileExtensions": [ "jest.js" ], + "scriptPreprocessor": "/tests/preprocesser.js", "testDirectoryName": "tests", "unmockedModulePathPatterns": [ "/node_modules/react" diff --git a/tests/helpers/changeExtensionTooltip.spec.js b/tests/helpers/changeExtensionTooltip.spec.js index 6bbb665..952aba4 100644 --- a/tests/helpers/changeExtensionTooltip.spec.js +++ b/tests/helpers/changeExtensionTooltip.spec.js @@ -1,8 +1,3 @@ -var chai = require('chai'); -var sinon = require('sinon'); -var chrome = require('sinon-chrome'); -var expect = chai.expect; - import changeExtensionTooltip from '../../assets/js/helpers/changeExtensionTooltip'; describe('changeExtensionTooltip', function() { @@ -11,8 +6,10 @@ describe('changeExtensionTooltip', function() { }); it('should change the extension tooltip', function() { + // Need to attach the spy first + spyOn(chrome.browserAction, 'setTitle'); changeExtensionTooltip('WakaTime'); - - sinon.assert.calledWithMatch(chrome.browserAction.setTitle, {title: 'WakaTime'}); + expect(chrome.browserAction.setTitle).toHaveBeenCalledWith({title: 'Wakatime'}); + // sinon.assert.calledWithMatch(chrome.browserAction.setTitle, {title: 'WakaTime'}); }); }); \ No newline at end of file diff --git a/tests/preprocesser.js b/tests/preprocesser.js new file mode 100644 index 0000000..148ce3a --- /dev/null +++ b/tests/preprocesser.js @@ -0,0 +1,7 @@ +// preprocessor.js +var ReactTools = require('react-tools'); +module.exports = { + process: function(src) { + return ReactTools.transform(src); + } +}; \ No newline at end of file