Added unit tests for "parser.js" and "util.js"

This commit is contained in:
euvl
2017-08-07 16:07:57 +01:00
parent 72f5222e4b
commit 0089717a8c
10 changed files with 186 additions and 7 deletions

View File

@@ -0,0 +1,14 @@
// This is the webpack config used for unit tests.
var webpack = require('webpack')
var merge = require('webpack-merge')
var baseConfig = require('./webpack.base.config')
var webpackConfig = merge(baseConfig, {
devtool: '#inline-source-map'
})
delete webpackConfig.entry
delete webpackConfig.output
module.exports = webpackConfig

4
dist/index.js vendored
View File

@@ -485,6 +485,8 @@ var inRange = exports.inRange = function inRange(from, to, value) {
return value;
};
exports.default = { inRange: inRange };
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
@@ -1191,7 +1193,7 @@ var getType = function getType(value) {
};
};
var parse = function parse(value) {
var parse = exports.parse = function parse(value) {
switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
case 'number':
return { type: 'px', value: value };

4
dist/ssr.index.js vendored
View File

@@ -349,6 +349,8 @@ var inRange = exports.inRange = function inRange(from, to, value) {
return value;
};
exports.default = { inRange: inRange };
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
@@ -1029,7 +1031,7 @@ var getType = function getType(value) {
};
};
var parse = function parse(value) {
var parse = exports.parse = function parse(value) {
switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
case 'number':
return { type: 'px', value: value };

View File

@@ -19,18 +19,37 @@
},
"scripts": {
"build:client": "webpack --config ./build/webpack.client.config.js --progress --hide-modules",
"build:server": "webpack --config ./build/webpack.server.config.js --progress --hide-modules"
"build:server": "webpack --config ./build/webpack.server.config.js --progress --hide-modules",
"unit": "karma start test/unit/karma.conf.js",
"build": "npm run unit && npm run build:client && npm run build:server"
},
"license": "MIT",
"devDependencies": {
"babel-core": "^6.25.0",
"babel-loader": "latest",
"babel-preset-env": "^1.5.2",
"chai": "^3.5.0",
"cross-env": "^3.0.0",
"css-loader": "^0.25.0",
"file-loader": "^0.9.0",
"jasmine-core": "^2.7.0",
"karma": "^1.4.1",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.1",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-phantomjs-shim": "^1.4.0",
"karma-sinon-chai": "^1.3.1",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.31",
"karma-webpack": "^2.0.2",
"lolex": "^1.5.2",
"mocha": "^3.2.0",
"node-sass": "^4.5.0",
"phantomjs-prebuilt": "^2.1.14",
"sass-loader": "^5.0.1",
"sinon": "^2.1.0",
"sinon-chai": "^2.8.0",
"uglifyjs-webpack-plugin": "^0.4.6",
"vue": "^2.2.6",
"vue-hot-reload-api": "^2.0.8",

View File

@@ -48,7 +48,7 @@ var getType = (value) => {
}
}
var parse = (value) => {
export const parse = (value) => {
switch (typeof value) {
case 'number':
return { type: 'px', value }

View File

@@ -9,3 +9,5 @@ export const inRange = (from, to, value) => {
return value
}
export default { inRange }

43
test/unit/karma.conf.js Normal file
View File

@@ -0,0 +1,43 @@
// Karma configuration
var webpackConfig = require('../../build/webpack.test.config.js')
module.exports = function(config) {
config.set({
frameworks: [
'mocha'
],
files: [
'./tests.webpack.js'
],
browsers: [
'Chrome'
],
preprocessors: {
'./tests.webpack.js': ['webpack', 'sourcemap']
},
reporters: ['spec'],
plugins: [
// Launchers
'karma-chrome-launcher',
// Test Libraries
'karma-mocha',
'karma-sinon-chai',
// Preprocessors
'karma-webpack',
'karma-sourcemap-loader',
// Reporters
'karma-spec-reporter',
'karma-coverage'
],
webpack: webpackConfig,
webpackMiddleware: {
noInfo: true
},
logLevel: config.LOG_INFO,
singleRun: true,
concurrency: Infinity,
})
}

69
test/unit/parser.spec.js Normal file
View File

@@ -0,0 +1,69 @@
var parser = require('../../src/parser')
var { expect } = require('chai')
describe('parser.js', () => {
describe('#parse', () => {
describe('Correct types', () => {
it('Should parse numbers', () => {
let object = parser.parse(10)
expect(object.value).to.be.a('number')
expect(object.type).to.be.a('string')
expect(object.value).to.equal(10)
expect(object.type).to.equal('px')
})
it('Should parse strings', () => {
let object = parser.parse('10')
expect(object.value).to.be.a('number')
expect(object.type).to.be.a('string')
expect(object.value).to.equal(10)
expect(object.type).to.equal('px')
})
it ('Should parse "auto" string, auto => {type: "auto", value: 0}', () => {
let object = parser.parse('auto')
expect(object.value).to.equal(0)
expect(object.type).to.equal('auto')
})
it ('Should parse wrong types', () => {
let nullValue = parser.parse(null)
let booleanValue = parser.parse(false)
expect(nullValue.value).to.equal(null)
expect(nullValue.type).to.equal('')
expect(booleanValue.value).to.equal(false)
expect(booleanValue.type).to.equal('')
})
})
describe('Parsing suffixed string', () => {
it ('Should parse "px"', () => {
let object = parser.parse('10px')
expect(object.value).to.equal(10)
expect(object.type).to.equal('px')
})
it ('Should parse "%"', () => {
let object = parser.parse('10%')
expect(object.value).to.equal(10)
expect(object.type).to.equal('%')
})
it ('Should not parse "%px"', () => {
let object = parser.parse('10%px')
expect(object.value).to.be.a('string')
expect(object.type).to.equal('')
})
})
})
})

View File

@@ -0,0 +1,2 @@
var testsContext = require.context('.', true, /\.spec$/)
testsContext.keys().forEach(testsContext)

26
test/unit/util.spec.js Normal file
View File

@@ -0,0 +1,26 @@
var util = require('../../src/util')
var { expect } = require('chai')
describe('util.js', () => {
describe('#inRange', () => {
it('Should return the source value (in the range)', () => {
let value = util.inRange(-10, 10, 0)
expect(value).to.equal(0)
})
it('Should not be equal to the source value (outside the range)', () => {
let value = util.inRange(-10, 10, -100)
expect(value).not.to.equal(-100)
})
it('Should replace source value with upper limit', () => {
let value = util.inRange(0, 10, 30)
expect(value).to.equal(10)
})
it('Should replace source value with lower limit', () => {
let value = util.inRange(1, 10, -1)
expect(value).to.equal(1)
})
})
})