(web) fixing unit-tests, preparing for release

This commit is contained in:
Alexey Kontsevoy 2016-03-16 02:28:59 -04:00
parent fd40ed5f86
commit 1a21339b07
15 changed files with 95 additions and 52820 deletions

View file

@ -1,5 +1,5 @@
var WebpackDevServer = require("webpack-dev-server");
var webpackConfig = require('./webpack.config.js');
var webpackConfig = require('./webpack.config.dev.js');
var express = require('express');
var webpack = require('webpack');
var proxy = require('http-proxy').createProxyServer();
@ -52,6 +52,6 @@ server.app.get(ROOT +'/*', function (req, res) {
module.exports = function(){
server.listen(PORT, "localhost", function() {
console.log('Dev Server is up and running: http://location:' + PORT);
console.log('Dev Server is up and running: https://location:' + PORT +'/web');
});
}

5558
web/dist/app/app.js vendored

File diff suppressed because one or more lines are too long

345
web/dist/app/styles.js vendored

File diff suppressed because one or more lines are too long

46810
web/dist/app/vendor.js vendored

File diff suppressed because one or more lines are too long

6
web/dist/index.html vendored
View file

@ -14,12 +14,12 @@
<script src="/web/app/assets/js/bootstrap.js"></script>
<script src="/web/app/assets/js/term.js"></script>
<script src="/web/app/assets/js/bootstrap-datepicker-1.6.0.js"></script>
<script src="/web/app/vendor.js?ver=0.11458068642392"></script>
<script src="/web/app/styles.js?ver=0.11458068642392"></script>
<script src="/web/app/vendor.js?ver=0.11458109567737"></script>
<script src="/web/app/styles.js?ver=0.11458109567737"></script>
</head>
<body class="grv">
<div id="app"></div>
</body>
<script src="/web/app/app.js?ver=0.11458068642392"></script>
<script src="/web/app/app.js?ver=0.11458109567737"></script>
</html>

View file

@ -3,26 +3,30 @@ var webpack = require('webpack');
var webpackConfig = require('./webpack.config.js');
var gutil = require('gulp-util');
var shell = require('gulp-shell');
var exec = require('child_process').execSync;
var fs = require('fs');
var VERSION = '0.1';
var BUILD_OUTPUT = 'dist';
var BUILD_OUTPUT_ASSETS = BUILD_OUTPUT+'/app/assets';
gulp.task('default', ['copy:assets', 'copy:html', 'webpack:build']);
gulp.task('default', ['clean', 'copy:assets', 'copy:html', 'webpack:build']);
gulp.task('clean', function(){
exec('rm -rf "' + BUILD_OUTPUT + '"');
exec('mkdir "' + BUILD_OUTPUT + '"');
});
gulp.task('copy:html', function(){
var indexHtml = fs.readFileSync('src/index.html', 'utf8');
indexHtml = indexHtml.replace(new RegExp("\\[VERSION]", "g"), VERSION+new Date().getTime() );
fs.writeFileSync('dist/index.html', indexHtml);
fs.writeFileSync(BUILD_OUTPUT+'/index.html', indexHtml);
});
gulp.task('copy:assets', function(){
// copy mocks
gulp.src(['src/mocks/**'])
.pipe(gulp.dest('dist/mocks'));
// copy assets
gulp.src(['src/assets/**', 'src/mocks/**'])
.pipe(gulp.dest('dist/app/assets'));
gulp.src(['src/assets/**'])
.pipe(gulp.dest(BUILD_OUTPUT_ASSETS));
});
gulp.task('dev', ['default'], function(){

View file

@ -1,29 +1,24 @@
var path = require('path');
var webpack = require('webpack');
module.exports = function (config) {
// Browsers to run on BrowserStack
var customLaunchers = {
BS_Chrome: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'chrome',
browser_version: '39.0',
}
};
// we want to pass this information to the client to disable/enable debug information as needed.
var clientArgs = [];
if(process.env.TELEPORT_NO_DEBUG === 1){
clientArgs['TELEPORT_NO_DEBUG'];
}
module.exports = function (config) {
config.set({
customLaunchers: customLaunchers,
browsers: [ 'Chrome'],
browsers: [],
frameworks: [ 'mocha' ],
reporters: [ 'mocha' ],
reporters: [ 'spec' ],
client: {
args : [process.env.TELEPORT_NO_DEBUG]
},
files: [
'node_modules/phantomjs-polyfill/bind-polyfill.js',
'src/assets/js/jquery-2.1.1.js',
'src/assets/js/bootstrap.min.js',
'src/assets/js/plugins/metisMenu/jquery.metisMenu.js',
'src/assets/js/plugins/slimscroll/jquery.slimscroll.min.js',
'src/assets/js/term.js',
'src/assets/js/jquery-validate-1.14.0.js',
'tests.webpack.js'
@ -35,14 +30,13 @@ module.exports = function (config) {
webpack: {
devtool: 'inline-source-map',
externals: ['jQuery', 'Terminal', 'sinos' ],
externals: ['jQuery', 'Terminal' ],
resolve: {
root: [ path.join(__dirname, 'src') ]
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
{ test: /\.jsx$/, exclude: /node_modules/, loader: 'babel' },
{ test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel' }
]
},
plugins: [

View file

@ -9,7 +9,8 @@
"build": "node node_modules/webpack/bin/webpack.js",
"dev": "gulp; node node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --content-base dist",
"lint": "node node_modules/eslint/bin/eslint src/**/*.js",
"test": "node node_modules/karma/bin/karma start"
"test": "TELEPORT_NO_DEBUG=1 node node_modules/karma/bin/karma start --browsers PhantomJS --single-run",
"tdd": "node node_modules/karma/bin/karma start --browsers Chrome"
},
"author": "",
"license": "",
@ -32,7 +33,7 @@
"body-parser": "^1.9.0",
"bootstrap-sass": "^3.3.6",
"css-loader": "^0.18.0",
"eslint": "^2.2.0",
"eslint": "2.2.0",
"eslint-loader": "^1.3.0",
"eslint-plugin-react": "3.3.2",
"events": "1.0.2",
@ -42,19 +43,22 @@
"gulp-shell": "^0.4.3",
"gulp-util": "^3.0.6",
"karma": "^0.13.8",
"karma-browserstack-launcher": "^0.1.4",
"karma-chrome-launcher": "^0.2.0",
"karma-mocha": "^0.2.0",
"karma-mocha-reporter": "^1.1.1",
"karma-phantomjs-launcher": "^1.0.0",
"karma-sourcemap-loader": "^0.3.5",
"karma-spec-reporter": "0.0.24",
"karma-webpack": "^1.7.0",
"keymirror": "^0.1.1",
"mocha": "^2.0.1",
"node-inspector": "^0.12.3",
"node-sass": "^3.3.2",
"phantomjs-polyfill": "0.0.2",
"phantomjs-prebuilt": "^2.1.4",
"raw-loader": "^0.5.1",
"react-hot-loader": "^1.3.0",
"react-addons-test-utils": "^0.14.3",
"react-hot-loader": "^1.3.0",
"sass-loader": "^2.0.1",
"serve-static": "^1.3.2",
"source-map-loader": "^0.1.5",

View file

@ -16,6 +16,7 @@ describe('auth', function () {
spyOn(auth, '_startTokenRefresher');
spyOn(auth, '_stopTokenRefresher');
spyOn(auth, '_getRefreshTokenTimerId');
spyOn(auth, '_redirect');
});
afterEach(function () {
@ -66,7 +67,7 @@ describe('auth', function () {
expect(wasCalled).toEqual(true);
});
it('should be rejected if token is invalid', function () {
it('should be rejected if token is invalid', function () {
var wasCalled = false;
api.post.andReturn($.Deferred().reject());
auth._getRefreshTokenTimerId.andReturn(null);

View file

@ -1,23 +0,0 @@
/*
{
"events": [],
"nodes": [{
"id": "0.0.0.0:3022",
"addr": "0.0.0.0:3022",
"hostname": "x220",
"labels": null,
"cmd_labels": null
}],
"session": {
"id": "e46449ef-36b0-418e-83b9-9be50386ce2e",
"parties": [{
"id": "21303619-1785-4486-80ee-e4d6213568c1",
"site": "127.0.0.1:33505",
"user": "akontsevoy",
"server_addr": "0.0.0.0:3022",
"last_active": "2016-02-26T21:26:36.503756758-05:00"
}]
}
}
*/

View file

@ -1,51 +0,0 @@
/*var React = require('react');
var ReactDOM = require('react-dom');
var ReactTestUtils = require('react-addons-test-utils');
var expect = require('expect');
describe('components/sessionPlayer', function () {
afterEach(function () {
ReactDOM.unmountComponentAtNode($node[0])
})
describe('initial state', function () {
it('XXX', function () {
render({sid: 4});
});
})
});
var SessionPlayer = React.createClass({
getInitialState() {
return {
isLoaind: false,
isPlaying: false,
msg: 'Connecting...'
}
},
componentDidMount() {
},
onOpen(){
actions.connected();
},
render: function() {
return (
<div className="grv-session-player">
</div>
);
}
});
function render(props){
ReactDOM.render(<ExpanderComponent ...props />, $node[0]);
}
*/

View file

@ -38,9 +38,13 @@ var auth = {
return $.Deferred().reject();
},
logout(){
logout(){
auth._stopTokenRefresher();
session.clear();
auth._redirect();
},
_redirect(){
window.location = cfg.routes.login;
},

View file

@ -1,7 +1,15 @@
import { Reactor } from 'nuclear-js'
let enabled = true;
// temporary workaround to disable debug info during unit-tests
let karma = window.__karma__;
if(karma && karma.config.args.length === 1){
enabled = false;
}
const reactor = new Reactor({
debug: true
debug: enabled
})
window.reactor = reactor;

10
web/webpack.config.dev.js Normal file
View file

@ -0,0 +1,10 @@
var webpack = require('webpack');
var webpackConfig = require('./webpack.config.js');
webpackConfig.cache = true;
webpackConfig.devtool = 'inline-source-map';
webpackConfig.plugins = [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.CommonsChunkPlugin({ names: ['vendor'] })]
module.exports = webpackConfig;

View file

@ -3,8 +3,6 @@ var webpack = require('webpack');
var pkgs = require('./package.json');
module.exports = {
cache: true,
devtool: 'inline-source-map',
entry: {
app: ['./src/app/index.jsx'],
vendor: Object.keys(pkgs.dependencies),
@ -19,7 +17,7 @@ module.exports = {
sourceMapFilename: '[name].map'
},
externals: ['jQuery', 'Terminal', 'toastr', '_' ],
externals: ['jQuery', 'Terminal', '_' ],
resolve: {
root: [ path.join(__dirname, 'src') ],
@ -29,16 +27,10 @@ module.exports = {
module: {
loaders: [
{ test: /\.(woff|woff2|ttf|eot|svg)$/, loader: "url-loader?limit=10000&name=fonts/[name].[ext]" },
{ test: /\.(woff|woff2|ttf|eot|svg)$/, loader: "url-loader?limit=10000&name=fonts/[name].[ext]" },
{
include: path.join(__dirname, 'src'),
test: /\.js$/,
exclude: /node_modules/,
loader: 'eslint!babel?loose=all&cacheDirectory'
},
{
include: path.join(__dirname, 'src'),
test: /\.jsx$/,
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'eslint!react-hot!babel?loose=all&cacheDirectory'
},
@ -49,14 +41,15 @@ module.exports = {
]
},
node: {
Buffer: true
},
plugins: [
new webpack.DefinePlugin({'process.env.NODE_ENV': '"production"'}),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.CommonsChunkPlugin({
names: ['vendor']
})
}),
new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false }
})
]
};