portree_kid
2020-07-16 21:51:01 +02:00
parent 4fac546e90
commit ec03754c95
10 changed files with 258 additions and 107 deletions
+18
View File
@@ -0,0 +1,18 @@
'use strict'
// Set BABEL_ENV to use proper env config
process.env.BABEL_ENV = 'test'
// Enable use of ES6+ on required files
require('babel-register')({
ignore: /node_modules/
})
// Attach Chai APIs to global scope
const { expect, should, assert } = require('chai')
global.expect = expect
global.should = should
global.assert = assert
// Require all JS files in `./specs` for Mocha to consume
require('require-dir')('./specs')
+188
View File
@@ -0,0 +1,188 @@
var assert = require('chai').assert;
var Worker = require("tiny-worker");
process.chdir('src/renderer/utils');
describe("Test Check", function() {
it("Not legitimate End", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true}
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === 1).filter(m => m.message=== 'Node not a legimate end'), 1);
assert.lengthOf(e.data[1].filter(m => m.id === 2).filter(m => m.message=== 'Node not a legimate end'), 1);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
it("Legitimate End Runway", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true},
{ 'index': 1, '_leaflet_id': 2, 'type': 'runway' }
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === 1).filter(m => m.message=== 'No way from runway to each parking'), 1);
assert.lengthOf(e.data[1].filter(m => m.id === 2).filter(m => m.message=== 'Node not a legimate end'), 1);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
it("From Parking to Runway bi-directional", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true, direction: 'bi-directional'},
{ 'index': 1, '_leaflet_id': 2, 'type': 'runway' },
{ 'index': 2, '_leaflet_id': 3, 'name': 'name', parkingType:'gate', 'type': 'parking' }
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === -1).filter(m => m.message=== 'Routes from runways OK'), 1);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
it("From Parking to Runway forward OK", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true, direction: 'forward'},
{ 'index': 1, '_leaflet_id': 3, 'name': 'name', parkingType:'gate', 'type': 'parking' },
{ 'index': 2, '_leaflet_id': 2, 'type': 'runway' }
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === -1).filter(m => m.message=== 'Routes from runways OK'), 1);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
it("From Parking to Runway forward Not Ok", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true, direction: 'forward'},
{ 'index': 2, '_leaflet_id': 3, 'name': 'name', parkingType:'gate', 'type': 'parking' },
{ 'index': 1, '_leaflet_id': 2, 'type': 'runway' }
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === -1).filter(m => m.message=== 'Routes from runways OK'), 0);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
it("From Parking to Runway reverse OK", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true, direction: 'backward'},
{ 'index': 2, '_leaflet_id': 3, 'name': 'name', parkingType:'gate', 'type': 'parking' },
{ 'index': 1, '_leaflet_id': 2, 'type': 'runway' }
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === -1).filter(m => m.message=== 'Routes from runways OK'), 1);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
it("From Parking to Runway reverse Not OK", function(done) {
var data = [
{ 'start': 1, 'end': 2, '_leaflet_id': 1, 'type': 'poly', 'isPushBackRoute': true, direction: 'backward'},
{ 'index': 1, '_leaflet_id': 3, 'name': 'name', parkingType:'gate', 'type': 'parking' },
{ 'index': 2, '_leaflet_id': 2, 'type': 'runway' }
];
var worker = new Worker('check.js');
worker.onmessage = function (e) {
if (e.data === 'checkStarted') {
} else if (e.data[0] === 'DONE') {
console.log('DONE')
worker.terminate()
if(e.data[1].length===0) {
done('Crashed')
} else {
console.log(e.data[1]);
console.log(e.data[1].filter(m => m.id === 1));
assert.lengthOf(e.data[1].filter(m => m.id === -1).filter(m => m.message=== 'Routes from runways OK'), 0);
done()
}
} else if (e.data.length > 0) {
}
};
worker.postMessage(['check', data]);
});
});
-13
View File
@@ -1,13 +0,0 @@
import Vue from 'vue'
Vue.config.devtools = false
Vue.config.productionTip = false
// require all test files (files that ends with .spec.js)
const testsContext = require.context('./specs', true, /\.spec$/)
testsContext.keys().forEach(testsContext)
// require all src files except main.js for coverage.
// you can also change this to match only the subset of files that
// you want coverage for.
const srcContext = require.context('../../src/renderer', true, /^\.\/(?!main(\.js)?$)/)
srcContext.keys().forEach(srcContext)
-62
View File
@@ -1,62 +0,0 @@
'use strict'
const path = require('path')
const merge = require('webpack-merge')
const webpack = require('webpack')
const baseConfig = require('../../.electron-vue/webpack.renderer.config')
const projectRoot = path.resolve(__dirname, '../../src/renderer')
// Set BABEL_ENV to use proper preset config
process.env.BABEL_ENV = 'test'
let webpackConfig = merge(baseConfig, {
devtool: '#inline-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"testing"'
})
]
})
// don't treat dependencies as externals
delete webpackConfig.entry
delete webpackConfig.externals
delete webpackConfig.output.libraryTarget
// apply vue option to apply isparta-loader on js
webpackConfig.module.rules
.find(rule => rule.use.loader === 'vue-loader').use.options.loaders.js = 'babel-loader'
module.exports = config => {
config.set({
browsers: ['visibleElectron'],
client: {
useIframe: false
},
coverageReporter: {
dir: './coverage',
reporters: [
{ type: 'lcov', subdir: '.' },
{ type: 'text-summary' }
]
},
customLaunchers: {
'visibleElectron': {
base: 'Electron',
flags: ['--show']
}
},
frameworks: ['mocha', 'chai'],
files: ['./index.js'],
preprocessors: {
'./index.js': ['webpack', 'sourcemap']
},
reporters: ['spec', 'coverage'],
singleRun: true,
webpack: webpackConfig,
webpackMiddleware: {
noInfo: true
}
})
}
-13
View File
@@ -1,13 +0,0 @@
import Vue from 'vue'
import LandingPage from '@/components/LandingPage'
describe('LandingPage.vue', () => {
it('should render correct contents', () => {
const vm = new Vue({
el: document.createElement('div'),
render: h => h(LandingPage)
}).$mount()
expect(vm.$el.querySelector('.title').textContent).to.contain('Welcome to your new project!')
})
})