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;
|
||||
};
|
||||
|
||||
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
4
dist/ssr.index.js
vendored
@@ -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 };
|
||||
|
||||
21
package.json
21
package.json
@@ -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",
|
||||
|
||||
@@ -11,7 +11,7 @@ var types = [
|
||||
{
|
||||
name: 'px',
|
||||
regexp: new RegExp(`^${floatRegexp}px\$`)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '%',
|
||||
regexp: new RegExp(`^${floatRegexp}%\$`)
|
||||
@@ -48,15 +48,15 @@ var getType = (value) => {
|
||||
}
|
||||
}
|
||||
|
||||
var parse = (value) => {
|
||||
export const parse = (value) => {
|
||||
switch (typeof value) {
|
||||
case 'number':
|
||||
return { type: 'px', value }
|
||||
case 'string':
|
||||
return getType(value)
|
||||
default:
|
||||
default:
|
||||
return { type: '', value }
|
||||
}
|
||||
}
|
||||
|
||||
export default parse
|
||||
export default parse
|
||||
|
||||
@@ -9,3 +9,5 @@ export const inRange = (from, to, 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