Added tests for helpers and components. All react components are now ES5.

This commit is contained in:
Mario Basic
2015-06-17 18:15:20 +02:00
parent a4fe94ac75
commit 2e64a56de2
14 changed files with 501 additions and 503 deletions

View File

@@ -1,6 +1,4 @@
var React = require('react'); var React = require('react');
var ReactAddons = require('react/addons');
var ReactCSSTransitionGroup = ReactAddons.addons.CSSTransitionGroup;
var classNames = require('classnames'); var classNames = require('classnames');
var Alert = React.createClass({ var Alert = React.createClass({

View File

@@ -1,13 +1,8 @@
//jshint esnext:true
var React = require('react'); var React = require('react');
class MainList extends React.Component { var MainList = React.createClass({
componentDidMount() {
} _openOptionsPage: function() {
_openOptionsPage() {
if (chrome.runtime.openOptionsPage) { if (chrome.runtime.openOptionsPage) {
// New way to open options pages, if supported (Chrome 42+). // New way to open options pages, if supported (Chrome 42+).
chrome.runtime.openOptionsPage(); chrome.runtime.openOptionsPage();
@@ -15,14 +10,17 @@ class MainList extends React.Component {
// Reasonable fallback. // Reasonable fallback.
window.open(chrome.runtime.getURL('options.html')); window.open(chrome.runtime.getURL('options.html'));
} }
} },
render() { render: function() {
var loginLogoutButton = () => {
if (this.props.loggedIn === true) { var that = this;
var loginLogoutButton = function() {
if (that.props.loggedIn === true) {
return ( return (
<div> <div>
<a href="#" className="list-group-item" onClick={this.props.logoutUser}> <a href="#" className="list-group-item" onClick={that.props.logoutUser}>
<i className="fa fa-fw fa-sign-out"></i> <i className="fa fa-fw fa-sign-out"></i>
Logout Logout
</a> </a>
@@ -39,26 +37,26 @@ class MainList extends React.Component {
}; };
// If logging is enabled, display that info to user // If logging is enabled, display that info to user
var loggingStatus = () => { var loggingStatus = function() {
if(this.props.loggingEnabled === true && this.props.loggedIn === true) if(that.props.loggingEnabled === true && that.props.loggedIn === true)
{ {
return ( return (
<div className="row"> <div className="row">
<div className="col-xs-12"> <div className="col-xs-12">
<p> <p>
<a href="#" onClick={this.props.disableLogging} className="btn btn-danger btn-block">Disable logging</a> <a href="#" onClick={that.props.disableLogging} className="btn btn-danger btn-block">Disable logging</a>
</p> </p>
</div> </div>
</div> </div>
); );
} }
else if(this.props.loggingEnabled === false && this.props.loggedIn === true) else if(that.props.loggingEnabled === false && that.props.loggedIn === true)
{ {
return ( return (
<div className="row"> <div className="row">
<div className="col-xs-12"> <div className="col-xs-12">
<p> <p>
<a href="#" onClick={this.props.enableLogging} className="btn btn-success btn-block">Enable logging</a> <a href="#" onClick={that.props.enableLogging} className="btn btn-success btn-block">Enable logging</a>
</p> </p>
</div> </div>
</div> </div>
@@ -66,13 +64,13 @@ class MainList extends React.Component {
} }
}; };
var totalTimeLoggedToday = () => { var totalTimeLoggedToday = function() {
if (this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return ( return (
<div className="row"> <div className="row">
<div className="col-xs-12"> <div className="col-xs-12">
<blockquote> <blockquote>
<p>{this.props.totalTimeLoggedToday}</p> <p>{that.props.totalTimeLoggedToday}</p>
<small><cite>TOTAL TIME LOGGED TODAY</cite></small> <small><cite>TOTAL TIME LOGGED TODAY</cite></small>
</blockquote> </blockquote>
</div> </div>
@@ -100,6 +98,7 @@ class MainList extends React.Component {
</div> </div>
); );
} }
}
export default MainList; });
module.exports = MainList;

View File

@@ -1,21 +1,21 @@
//jshint esnext:true
var React = require('react'); var React = require('react');
class Navbar extends React.Component { var Navbar = React.createClass({
render() { render: function() {
var signedInAs = () => { var that = this;
if (this.props.loggedIn === true) {
var signedInAs = function() {
if (that.props.loggedIn === true) {
return ( return (
<p className="navbar-text">Signed in as <b>{this.props.user.full_name}</b></p> <p className="navbar-text">Signed in as <b>{that.props.user.full_name}</b></p>
); );
} }
}; };
var dashboard = () => { var dashboard = function() {
if (this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return ( return (
<li> <li>
<a target="_blank" href="https://wakatime.com/dashboard"> <a target="_blank" href="https://wakatime.com/dashboard">
@@ -27,8 +27,8 @@ class Navbar extends React.Component {
} }
}; };
var customRules = () => { var customRules = function() {
if (this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return ( return (
<li> <li>
<a target="_blank" href="https://wakatime.com/settings/rules"> <a target="_blank" href="https://wakatime.com/settings/rules">
@@ -84,6 +84,6 @@ class Navbar extends React.Component {
); );
} }
} });
export default Navbar; module.exports = Navbar;

View File

@@ -1,5 +1,3 @@
//jshint esnext:true
var React = require("react"); var React = require("react");
var $ = require('jquery'); var $ = require('jquery');
@@ -15,13 +13,10 @@ var WakaTimeOriginal = require('../core/WakaTime');
// Helpers // Helpers
var changeExtensionState = require('../helpers/changeExtensionState'); var changeExtensionState = require('../helpers/changeExtensionState');
class WakaTime extends React.Component { var WakaTime = React.createClass({
constructor(props){ getInitialState: function() {
return {
super(props);
this.state = {
user: { user: {
full_name: null, full_name: null,
email: null, email: null,
@@ -31,21 +26,23 @@ class WakaTime extends React.Component {
loggingEnabled: config.loggingEnabled, loggingEnabled: config.loggingEnabled,
totalTimeLoggedToday: '0 minutes' totalTimeLoggedToday: '0 minutes'
}; };
} },
componentDidMount: function() {
componentDidMount() {
var wakatime = new WakaTimeOriginal; var wakatime = new WakaTimeOriginal;
wakatime.checkAuth().done(data => { var that = this;
wakatime.checkAuth().done(function(data) {
if (data !== false) { if (data !== false) {
chrome.storage.sync.get({ chrome.storage.sync.get({
loggingEnabled: config.loggingEnabled loggingEnabled: config.loggingEnabled
}, (items) => { }, function(items) {
this.setState({loggingEnabled: items.loggingEnabled}); that.setState({loggingEnabled: items.loggingEnabled});
if (items.loggingEnabled === true) { if (items.loggingEnabled === true) {
changeExtensionState('allGood'); changeExtensionState('allGood');
} }
@@ -54,7 +51,7 @@ class WakaTime extends React.Component {
} }
}); });
this.setState({ that.setState({
user: { user: {
full_name: data.full_name, full_name: data.full_name,
email: data.email, email: data.email,
@@ -63,10 +60,10 @@ class WakaTime extends React.Component {
loggedIn: true loggedIn: true
}); });
wakatime.getTotalTimeLoggedToday().done((grand_total) => { wakatime.getTotalTimeLoggedToday().done(function(grand_total) {
this.setState({ that.setState({
totalTimeLoggedToday: grand_total['text'] totalTimeLoggedToday: grand_total['text']
}) });
}); });
} }
else { else {
@@ -74,34 +71,39 @@ class WakaTime extends React.Component {
} }
}); });
} },
logoutUser() { logoutUser: function() {
var deferredObject = $.Deferred(); var deferredObject = $.Deferred();
var that = this;
$.ajax({ $.ajax({
url: config.logoutUserUrl, url: config.logoutUserUrl,
method: 'GET', method: 'GET',
success: () => { success: function() {
deferredObject.resolve(this); deferredObject.resolve(that);
}, },
error: (xhr, status, err) => { error: (xhr, status, err) => {
console.error(config.logoutUserUrl, status, err.toString()); console.error(config.logoutUserUrl, status, err.toString());
deferredObject.resolve(this); deferredObject.resolve(that);
} }
}); });
return deferredObject.promise(); return deferredObject.promise();
} },
_logoutUser() { _logoutUser: function() {
this.logoutUser().done(() => {
this.setState({ var that = this;
this.logoutUser().done(function(){
that.setState({
user: { user: {
full_name: null, full_name: null,
email: null, email: null,
@@ -114,9 +116,9 @@ class WakaTime extends React.Component {
changeExtensionState('notSignedIn'); changeExtensionState('notSignedIn');
}); });
} },
_disableLogging() { _disableLogging: function() {
this.setState({ this.setState({
loggingEnabled: false loggingEnabled: false
}); });
@@ -126,9 +128,9 @@ class WakaTime extends React.Component {
chrome.storage.sync.set({ chrome.storage.sync.set({
loggingEnabled: false loggingEnabled: false
}); });
} },
_enableLogging() { _enableLogging: function() {
this.setState({ this.setState({
loggingEnabled: true loggingEnabled: true
}); });
@@ -138,10 +140,9 @@ class WakaTime extends React.Component {
chrome.storage.sync.set({ chrome.storage.sync.set({
loggingEnabled: true loggingEnabled: true
}); });
} },
render: function() {
render() {
return ( return (
<div> <div>
<NavBar <NavBar
@@ -151,12 +152,12 @@ class WakaTime extends React.Component {
<div className="row"> <div className="row">
<div className="col-md-12"> <div className="col-md-12">
<MainList <MainList
disableLogging={this._disableLogging.bind(this)} disableLogging={this._disableLogging}
enableLogging={this._enableLogging.bind(this)} enableLogging={this._enableLogging}
loggingEnabled={this.state.loggingEnabled} loggingEnabled={this.state.loggingEnabled}
user={this.state.user} user={this.state.user}
totalTimeLoggedToday={this.state.totalTimeLoggedToday} totalTimeLoggedToday={this.state.totalTimeLoggedToday}
logoutUser={this._logoutUser.bind(this)} logoutUser={this._logoutUser}
loggedIn={this.state.loggedIn} /> loggedIn={this.state.loggedIn} />
</div> </div>
</div> </div>
@@ -164,6 +165,7 @@ class WakaTime extends React.Component {
</div> </div>
); );
} }
}
export default WakaTime; });
module.exports = WakaTime;

View File

@@ -44,6 +44,7 @@ var config = {
'blacklisted', 'blacklisted',
'whitelisted' 'whitelisted'
], ],
// Predefined alert type and text for success and failure.
alert: { alert: {
success: { success: {
type: 'success', type: 'success',

View File

@@ -15,39 +15,14 @@ React.render(React.createElement(WakaTime, null), document.getElementById('wakat
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"./components/WakaTime.react":4,"bootstrap":13,"jquery":26,"react":183}],2:[function(require,module,exports){ },{"./components/WakaTime.react":4,"bootstrap":13,"jquery":26,"react":183}],2:[function(require,module,exports){
//jshint esnext:true
'use strict'; 'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }
var React = require('react'); var React = require('react');
var MainList = (function (_React$Component) { var MainList = React.createClass({
function MainList() { displayName: 'MainList',
_classCallCheck(this, MainList);
if (_React$Component != null) { _openOptionsPage: function _openOptionsPage() {
_React$Component.apply(this, arguments);
}
}
_inherits(MainList, _React$Component);
_createClass(MainList, [{
key: 'componentDidMount',
value: function componentDidMount() {}
}, {
key: '_openOptionsPage',
value: function _openOptionsPage() {
if (chrome.runtime.openOptionsPage) { if (chrome.runtime.openOptionsPage) {
// New way to open options pages, if supported (Chrome 42+). // New way to open options pages, if supported (Chrome 42+).
chrome.runtime.openOptionsPage(); chrome.runtime.openOptionsPage();
@@ -55,20 +30,20 @@ var MainList = (function (_React$Component) {
// Reasonable fallback. // Reasonable fallback.
window.open(chrome.runtime.getURL('options.html')); window.open(chrome.runtime.getURL('options.html'));
} }
} },
}, {
key: 'render', render: function render() {
value: function render() {
var _this = this; var that = this;
var loginLogoutButton = function loginLogoutButton() { var loginLogoutButton = function loginLogoutButton() {
if (_this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return React.createElement( return React.createElement(
'div', 'div',
null, null,
React.createElement( React.createElement(
'a', 'a',
{ href: '#', className: 'list-group-item', onClick: _this.props.logoutUser }, { href: '#', className: 'list-group-item', onClick: that.props.logoutUser },
React.createElement('i', { className: 'fa fa-fw fa-sign-out' }), React.createElement('i', { className: 'fa fa-fw fa-sign-out' }),
'Logout' 'Logout'
) )
@@ -85,7 +60,7 @@ var MainList = (function (_React$Component) {
// If logging is enabled, display that info to user // If logging is enabled, display that info to user
var loggingStatus = function loggingStatus() { var loggingStatus = function loggingStatus() {
if (_this.props.loggingEnabled === true && _this.props.loggedIn === true) { if (that.props.loggingEnabled === true && that.props.loggedIn === true) {
return React.createElement( return React.createElement(
'div', 'div',
{ className: 'row' }, { className: 'row' },
@@ -97,13 +72,13 @@ var MainList = (function (_React$Component) {
null, null,
React.createElement( React.createElement(
'a', 'a',
{ href: '#', onClick: _this.props.disableLogging, className: 'btn btn-danger btn-block' }, { href: '#', onClick: that.props.disableLogging, className: 'btn btn-danger btn-block' },
'Disable logging' 'Disable logging'
) )
) )
) )
); );
} else if (_this.props.loggingEnabled === false && _this.props.loggedIn === true) { } else if (that.props.loggingEnabled === false && that.props.loggedIn === true) {
return React.createElement( return React.createElement(
'div', 'div',
{ className: 'row' }, { className: 'row' },
@@ -115,7 +90,7 @@ var MainList = (function (_React$Component) {
null, null,
React.createElement( React.createElement(
'a', 'a',
{ href: '#', onClick: _this.props.enableLogging, className: 'btn btn-success btn-block' }, { href: '#', onClick: that.props.enableLogging, className: 'btn btn-success btn-block' },
'Enable logging' 'Enable logging'
) )
) )
@@ -125,7 +100,7 @@ var MainList = (function (_React$Component) {
}; };
var totalTimeLoggedToday = function totalTimeLoggedToday() { var totalTimeLoggedToday = function totalTimeLoggedToday() {
if (_this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return React.createElement( return React.createElement(
'div', 'div',
{ className: 'row' }, { className: 'row' },
@@ -138,7 +113,7 @@ var MainList = (function (_React$Component) {
React.createElement( React.createElement(
'p', 'p',
null, null,
_this.props.totalTimeLoggedToday that.props.totalTimeLoggedToday
), ),
React.createElement( React.createElement(
'small', 'small',
@@ -173,49 +148,25 @@ var MainList = (function (_React$Component) {
) )
); );
} }
}]);
return MainList;
})(React.Component);
exports['default'] = MainList;
module.exports = exports['default'];
},{"react":183}],3:[function(require,module,exports){
//jshint esnext:true
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
}); });
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); module.exports = MainList;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } },{"react":183}],3:[function(require,module,exports){
"use strict";
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }
var React = require("react"); var React = require("react");
var Navbar = (function (_React$Component) { var Navbar = React.createClass({
function Navbar() { displayName: "Navbar",
_classCallCheck(this, Navbar);
if (_React$Component != null) { render: function render() {
_React$Component.apply(this, arguments);
}
}
_inherits(Navbar, _React$Component); var that = this;
_createClass(Navbar, [{
key: "render",
value: function render() {
var _this = this;
var signedInAs = function signedInAs() { var signedInAs = function signedInAs() {
if (_this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return React.createElement( return React.createElement(
"p", "p",
{ className: "navbar-text" }, { className: "navbar-text" },
@@ -223,14 +174,14 @@ var Navbar = (function (_React$Component) {
React.createElement( React.createElement(
"b", "b",
null, null,
_this.props.user.full_name that.props.user.full_name
) )
); );
} }
}; };
var dashboard = function dashboard() { var dashboard = function dashboard() {
if (_this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return React.createElement( return React.createElement(
"li", "li",
null, null,
@@ -245,7 +196,7 @@ var Navbar = (function (_React$Component) {
}; };
var customRules = function customRules() { var customRules = function customRules() {
if (_this.props.loggedIn === true) { if (that.props.loggedIn === true) {
return React.createElement( return React.createElement(
"li", "li",
null, null,
@@ -334,30 +285,13 @@ var Navbar = (function (_React$Component) {
) )
); );
} }
}]);
return Navbar;
})(React.Component);
exports["default"] = Navbar;
module.exports = exports["default"];
},{"react":183}],4:[function(require,module,exports){
//jshint esnext:true
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
}); });
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); module.exports = Navbar;
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; },{"react":183}],4:[function(require,module,exports){
'use strict';
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }
var React = require('react'); var React = require('react');
var $ = require('jquery'); var $ = require('jquery');
@@ -374,13 +308,11 @@ var WakaTimeOriginal = require('../core/WakaTime');
// Helpers // Helpers
var changeExtensionState = require('../helpers/changeExtensionState'); var changeExtensionState = require('../helpers/changeExtensionState');
var WakaTime = (function (_React$Component) { var WakaTime = React.createClass({
function WakaTime(props) { displayName: 'WakaTime',
_classCallCheck(this, WakaTime);
_get(Object.getPrototypeOf(WakaTime.prototype), 'constructor', this).call(this, props); getInitialState: function getInitialState() {
return {
this.state = {
user: { user: {
full_name: null, full_name: null,
email: null, email: null,
@@ -390,17 +322,14 @@ var WakaTime = (function (_React$Component) {
loggingEnabled: config.loggingEnabled, loggingEnabled: config.loggingEnabled,
totalTimeLoggedToday: '0 minutes' totalTimeLoggedToday: '0 minutes'
}; };
} },
_inherits(WakaTime, _React$Component); componentDidMount: function componentDidMount() {
_createClass(WakaTime, [{
key: 'componentDidMount',
value: function componentDidMount() {
var _this = this;
var wakatime = new WakaTimeOriginal(); var wakatime = new WakaTimeOriginal();
var that = this;
wakatime.checkAuth().done(function (data) { wakatime.checkAuth().done(function (data) {
if (data !== false) { if (data !== false) {
@@ -408,7 +337,8 @@ var WakaTime = (function (_React$Component) {
chrome.storage.sync.get({ chrome.storage.sync.get({
loggingEnabled: config.loggingEnabled loggingEnabled: config.loggingEnabled
}, function (items) { }, function (items) {
_this.setState({ loggingEnabled: items.loggingEnabled }); that.setState({ loggingEnabled: items.loggingEnabled });
if (items.loggingEnabled === true) { if (items.loggingEnabled === true) {
changeExtensionState('allGood'); changeExtensionState('allGood');
} else { } else {
@@ -416,7 +346,7 @@ var WakaTime = (function (_React$Component) {
} }
}); });
_this.setState({ that.setState({
user: { user: {
full_name: data.full_name, full_name: data.full_name,
email: data.email, email: data.email,
@@ -426,7 +356,7 @@ var WakaTime = (function (_React$Component) {
}); });
wakatime.getTotalTimeLoggedToday().done(function (grand_total) { wakatime.getTotalTimeLoggedToday().done(function (grand_total) {
_this.setState({ that.setState({
totalTimeLoggedToday: grand_total['text'] totalTimeLoggedToday: grand_total['text']
}); });
}); });
@@ -434,39 +364,38 @@ var WakaTime = (function (_React$Component) {
changeExtensionState('notSignedIn'); changeExtensionState('notSignedIn');
} }
}); });
} },
}, {
key: 'logoutUser',
value: function logoutUser() {
var _this2 = this;
logoutUser: function logoutUser() {
var deferredObject = $.Deferred(); var deferredObject = $.Deferred();
var that = this;
$.ajax({ $.ajax({
url: config.logoutUserUrl, url: config.logoutUserUrl,
method: 'GET', method: 'GET',
success: function success() { success: function success() {
deferredObject.resolve(_this2); deferredObject.resolve(that);
}, },
error: function error(xhr, status, err) { error: function error(xhr, status, err) {
console.error(config.logoutUserUrl, status, err.toString()); console.error(config.logoutUserUrl, status, err.toString());
deferredObject.resolve(_this2); deferredObject.resolve(that);
} }
}); });
return deferredObject.promise(); return deferredObject.promise();
} },
}, {
key: '_logoutUser', _logoutUser: function _logoutUser() {
value: function _logoutUser() {
var _this3 = this; var that = this;
this.logoutUser().done(function () { this.logoutUser().done(function () {
_this3.setState({ that.setState({
user: { user: {
full_name: null, full_name: null,
email: null, email: null,
@@ -478,10 +407,9 @@ var WakaTime = (function (_React$Component) {
changeExtensionState('notSignedIn'); changeExtensionState('notSignedIn');
}); });
} },
}, {
key: '_disableLogging', _disableLogging: function _disableLogging() {
value: function _disableLogging() {
this.setState({ this.setState({
loggingEnabled: false loggingEnabled: false
}); });
@@ -491,10 +419,9 @@ var WakaTime = (function (_React$Component) {
chrome.storage.sync.set({ chrome.storage.sync.set({
loggingEnabled: false loggingEnabled: false
}); });
} },
}, {
key: '_enableLogging', _enableLogging: function _enableLogging() {
value: function _enableLogging() {
this.setState({ this.setState({
loggingEnabled: true loggingEnabled: true
}); });
@@ -504,10 +431,9 @@ var WakaTime = (function (_React$Component) {
chrome.storage.sync.set({ chrome.storage.sync.set({
loggingEnabled: true loggingEnabled: true
}); });
} },
}, {
key: 'render', render: function render() {
value: function render() {
return React.createElement( return React.createElement(
'div', 'div',
null, null,
@@ -524,25 +450,22 @@ var WakaTime = (function (_React$Component) {
'div', 'div',
{ className: 'col-md-12' }, { className: 'col-md-12' },
React.createElement(MainList, { React.createElement(MainList, {
disableLogging: this._disableLogging.bind(this), disableLogging: this._disableLogging,
enableLogging: this._enableLogging.bind(this), enableLogging: this._enableLogging,
loggingEnabled: this.state.loggingEnabled, loggingEnabled: this.state.loggingEnabled,
user: this.state.user, user: this.state.user,
totalTimeLoggedToday: this.state.totalTimeLoggedToday, totalTimeLoggedToday: this.state.totalTimeLoggedToday,
logoutUser: this._logoutUser.bind(this), logoutUser: this._logoutUser,
loggedIn: this.state.loggedIn }) loggedIn: this.state.loggedIn })
) )
) )
) )
); );
} }
}]);
return WakaTime; });
})(React.Component);
exports['default'] = WakaTime; module.exports = WakaTime;
module.exports = exports['default'];
},{"../config":5,"../core/WakaTime":6,"../helpers/changeExtensionState":8,"./MainList.react":2,"./NavBar.react":3,"jquery":26,"react":183}],5:[function(require,module,exports){ },{"../config":5,"../core/WakaTime":6,"../helpers/changeExtensionState":8,"./MainList.react":2,"./NavBar.react":3,"jquery":26,"react":183}],5:[function(require,module,exports){
'use strict'; 'use strict';
@@ -590,6 +513,7 @@ var config = {
theme: 'light', theme: 'light',
// Valid extension states // Valid extension states
states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'], states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'],
// Predefined alert type and text for success and failure.
alert: { alert: {
success: { success: {
type: 'success', type: 'success',

View File

@@ -142,6 +142,7 @@ var config = {
theme: 'light', theme: 'light',
// Valid extension states // Valid extension states
states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'], states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'],
// Predefined alert type and text for success and failure.
alert: { alert: {
success: { success: {
type: 'success', type: 'success',

View File

@@ -18,8 +18,6 @@ React.render(React.createElement(Options, null), document.getElementById('wakati
'use strict'; 'use strict';
var React = require('react'); var React = require('react');
var ReactAddons = require('react/addons');
var ReactCSSTransitionGroup = ReactAddons.addons.CSSTransitionGroup;
var classNames = require('classnames'); var classNames = require('classnames');
var Alert = React.createClass({ var Alert = React.createClass({
@@ -42,7 +40,7 @@ var Alert = React.createClass({
module.exports = Alert; module.exports = Alert;
},{"classnames":18,"react":193,"react/addons":21}],3:[function(require,module,exports){ },{"classnames":18,"react":193}],3:[function(require,module,exports){
'use strict'; 'use strict';
var React = require('react'); var React = require('react');
@@ -407,6 +405,7 @@ var config = {
theme: 'light', theme: 'light',
// Valid extension states // Valid extension states
states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'], states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'],
// Predefined alert type and text for success and failure.
alert: { alert: {
success: { success: {
type: 'success', type: 'success',

View File

@@ -0,0 +1,17 @@
jest.dontMock('../../assets/js/components/Alert.react.js');
describe('Wakatime', function() {
var React, Alert, TestUtils, Component;
beforeEach(function() {
// Setup our tools
React = require('react/addons');
Alert = require('../../assets/js/components/Alert.react.js');
TestUtils = React.addons.TestUtils;
// Create the React component here using TestUtils and store into Component
});
it('should work', function() {
expect(2 + 2).toEqual(4);
});
});

View File

@@ -0,0 +1,17 @@
jest.dontMock('../../assets/js/components/Options.react.js');
describe('Wakatime', function() {
var React, Options, TestUtils, Component;
beforeEach(function() {
// Setup our tools
React = require('react/addons');
Options = require('../../assets/js/components/Options.react.js');
TestUtils = React.addons.TestUtils;
// Create the React component here using TestUtils and store into Component
});
it('should work', function() {
expect(2 + 2).toEqual(4);
});
});

View File

@@ -0,0 +1,10 @@
var chai = require('chai');
var expect = chai.expect;
import changeExtensionState from '../../assets/js/helpers/changeExtensionState';
describe('changeExtensionState', function() {
it('should be a function', function() {
expect(changeExtensionState).to.be.a('function');
});
});

View File

@@ -0,0 +1,10 @@
var chai = require('chai');
var expect = chai.expect;
import changeExtensionTooltip from '../../assets/js/helpers/changeExtensionTooltip';
describe('changeExtensionTooltip', function() {
it('should be a function', function() {
expect(changeExtensionTooltip).to.be.a('function');
});
});

View File

@@ -0,0 +1,10 @@
var chai = require('chai');
var expect = chai.expect;
import getDomainFromUrl from '../../assets/js/helpers/getDomainFromUrl';
describe('getDomainFromUrl', function() {
it('should be a function', function() {
expect(getDomainFromUrl).to.be.a('function');
});
});

View File

@@ -0,0 +1,10 @@
var chai = require('chai');
var expect = chai.expect;
import in_array from '../../assets/js/helpers/in_array';
describe('in_array', function() {
it('should be a function', function() {
expect(in_array).to.be.a('function');
});
});