mirror of
https://github.com/KevinMidboe/vue-js-modal.git
synced 2025-10-29 18:00:20 +00:00
Added unit tests for "parser.js" and "util.js"
This commit is contained in:
14
build/webpack.test.config.js
Normal file
14
build/webpack.test.config.js
Normal 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
4
dist/index.js
vendored
@@ -485,6 +485,8 @@ var inRange = exports.inRange = function inRange(from, to, value) {
|
|||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.default = { inRange: inRange };
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 5 */
|
/* 5 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (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)) {
|
switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
|
||||||
case 'number':
|
case 'number':
|
||||||
return { type: 'px', value: value };
|
return { type: 'px', value: value };
|
||||||
|
|||||||
4
dist/ssr.index.js
vendored
4
dist/ssr.index.js
vendored
@@ -349,6 +349,8 @@ var inRange = exports.inRange = function inRange(from, to, value) {
|
|||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.default = { inRange: inRange };
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 5 */
|
/* 5 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (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)) {
|
switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
|
||||||
case 'number':
|
case 'number':
|
||||||
return { type: 'px', value: value };
|
return { type: 'px', value: value };
|
||||||
|
|||||||
21
package.json
21
package.json
@@ -19,18 +19,37 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build:client": "webpack --config ./build/webpack.client.config.js --progress --hide-modules",
|
"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",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-core": "^6.25.0",
|
"babel-core": "^6.25.0",
|
||||||
"babel-loader": "latest",
|
"babel-loader": "latest",
|
||||||
"babel-preset-env": "^1.5.2",
|
"babel-preset-env": "^1.5.2",
|
||||||
|
"chai": "^3.5.0",
|
||||||
"cross-env": "^3.0.0",
|
"cross-env": "^3.0.0",
|
||||||
"css-loader": "^0.25.0",
|
"css-loader": "^0.25.0",
|
||||||
"file-loader": "^0.9.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",
|
"node-sass": "^4.5.0",
|
||||||
|
"phantomjs-prebuilt": "^2.1.14",
|
||||||
"sass-loader": "^5.0.1",
|
"sass-loader": "^5.0.1",
|
||||||
|
"sinon": "^2.1.0",
|
||||||
|
"sinon-chai": "^2.8.0",
|
||||||
"uglifyjs-webpack-plugin": "^0.4.6",
|
"uglifyjs-webpack-plugin": "^0.4.6",
|
||||||
"vue": "^2.2.6",
|
"vue": "^2.2.6",
|
||||||
"vue-hot-reload-api": "^2.0.8",
|
"vue-hot-reload-api": "^2.0.8",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var types = [
|
|||||||
{
|
{
|
||||||
name: 'px',
|
name: 'px',
|
||||||
regexp: new RegExp(`^${floatRegexp}px\$`)
|
regexp: new RegExp(`^${floatRegexp}px\$`)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '%',
|
name: '%',
|
||||||
regexp: new RegExp(`^${floatRegexp}%\$`)
|
regexp: new RegExp(`^${floatRegexp}%\$`)
|
||||||
@@ -48,15 +48,15 @@ var getType = (value) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var parse = (value) => {
|
export const parse = (value) => {
|
||||||
switch (typeof value) {
|
switch (typeof value) {
|
||||||
case 'number':
|
case 'number':
|
||||||
return { type: 'px', value }
|
return { type: 'px', value }
|
||||||
case 'string':
|
case 'string':
|
||||||
return getType(value)
|
return getType(value)
|
||||||
default:
|
default:
|
||||||
return { type: '', value }
|
return { type: '', value }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default parse
|
export default parse
|
||||||
|
|||||||
@@ -9,3 +9,5 @@ export const inRange = (from, to, value) => {
|
|||||||
|
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default { inRange }
|
||||||
|
|||||||
43
test/unit/karma.conf.js
Normal file
43
test/unit/karma.conf.js
Normal 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
69
test/unit/parser.spec.js
Normal 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('')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
2
test/unit/tests.webpack.js
Normal file
2
test/unit/tests.webpack.js
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
var testsContext = require.context('.', true, /\.spec$/)
|
||||||
|
testsContext.keys().forEach(testsContext)
|
||||||
26
test/unit/util.spec.js
Normal file
26
test/unit/util.spec.js
Normal 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)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user