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", | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ 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 } | ||||||
|   | |||||||
| @@ -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