Skip to content

Commit 0089717

Browse files
committed
Added unit tests for "parser.js" and "util.js"
1 parent 72f5222 commit 0089717

File tree

10 files changed

+186
-7
lines changed

10 files changed

+186
-7
lines changed

build/webpack.test.config.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// This is the webpack config used for unit tests.
2+
3+
var webpack = require('webpack')
4+
var merge = require('webpack-merge')
5+
var baseConfig = require('./webpack.base.config')
6+
7+
var webpackConfig = merge(baseConfig, {
8+
devtool: '#inline-source-map'
9+
})
10+
11+
delete webpackConfig.entry
12+
delete webpackConfig.output
13+
14+
module.exports = webpackConfig

dist/index.js

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ssr.index.js

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,37 @@
1919
},
2020
"scripts": {
2121
"build:client": "webpack --config ./build/webpack.client.config.js --progress --hide-modules",
22-
"build:server": "webpack --config ./build/webpack.server.config.js --progress --hide-modules"
22+
"build:server": "webpack --config ./build/webpack.server.config.js --progress --hide-modules",
23+
"unit": "karma start test/unit/karma.conf.js",
24+
"build": "npm run unit && npm run build:client && npm run build:server"
2325
},
2426
"license": "MIT",
2527
"devDependencies": {
2628
"babel-core": "^6.25.0",
2729
"babel-loader": "latest",
2830
"babel-preset-env": "^1.5.2",
31+
"chai": "^3.5.0",
2932
"cross-env": "^3.0.0",
3033
"css-loader": "^0.25.0",
3134
"file-loader": "^0.9.0",
35+
"jasmine-core": "^2.7.0",
36+
"karma": "^1.4.1",
37+
"karma-chrome-launcher": "^2.2.0",
38+
"karma-coverage": "^1.1.1",
39+
"karma-mocha": "^1.3.0",
40+
"karma-phantomjs-launcher": "^1.0.4",
41+
"karma-phantomjs-shim": "^1.4.0",
42+
"karma-sinon-chai": "^1.3.1",
43+
"karma-sourcemap-loader": "^0.3.7",
44+
"karma-spec-reporter": "0.0.31",
45+
"karma-webpack": "^2.0.2",
46+
"lolex": "^1.5.2",
47+
"mocha": "^3.2.0",
3248
"node-sass": "^4.5.0",
49+
"phantomjs-prebuilt": "^2.1.14",
3350
"sass-loader": "^5.0.1",
51+
"sinon": "^2.1.0",
52+
"sinon-chai": "^2.8.0",
3453
"uglifyjs-webpack-plugin": "^0.4.6",
3554
"vue": "^2.2.6",
3655
"vue-hot-reload-api": "^2.0.8",

src/parser.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var types = [
1111
{
1212
name: 'px',
1313
regexp: new RegExp(`^${floatRegexp}px\$`)
14-
},
14+
},
1515
{
1616
name: '%',
1717
regexp: new RegExp(`^${floatRegexp}%\$`)
@@ -48,15 +48,15 @@ var getType = (value) => {
4848
}
4949
}
5050

51-
var parse = (value) => {
51+
export const parse = (value) => {
5252
switch (typeof value) {
5353
case 'number':
5454
return { type: 'px', value }
5555
case 'string':
5656
return getType(value)
57-
default:
57+
default:
5858
return { type: '', value }
5959
}
6060
}
6161

62-
export default parse
62+
export default parse

src/util.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@ export const inRange = (from, to, value) => {
99

1010
return value
1111
}
12+
13+
export default { inRange }

test/unit/karma.conf.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Karma configuration
2+
var webpackConfig = require('../../build/webpack.test.config.js')
3+
4+
module.exports = function(config) {
5+
config.set({
6+
frameworks: [
7+
'mocha'
8+
],
9+
files: [
10+
'./tests.webpack.js'
11+
],
12+
browsers: [
13+
'Chrome'
14+
],
15+
preprocessors: {
16+
'./tests.webpack.js': ['webpack', 'sourcemap']
17+
},
18+
reporters: ['spec'],
19+
plugins: [
20+
// Launchers
21+
'karma-chrome-launcher',
22+
23+
// Test Libraries
24+
'karma-mocha',
25+
'karma-sinon-chai',
26+
27+
// Preprocessors
28+
'karma-webpack',
29+
'karma-sourcemap-loader',
30+
// Reporters
31+
'karma-spec-reporter',
32+
'karma-coverage'
33+
],
34+
35+
webpack: webpackConfig,
36+
webpackMiddleware: {
37+
noInfo: true
38+
},
39+
logLevel: config.LOG_INFO,
40+
singleRun: true,
41+
concurrency: Infinity,
42+
})
43+
}

test/unit/parser.spec.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
var parser = require('../../src/parser')
2+
var { expect } = require('chai')
3+
4+
describe('parser.js', () => {
5+
describe('#parse', () => {
6+
describe('Correct types', () => {
7+
it('Should parse numbers', () => {
8+
let object = parser.parse(10)
9+
10+
expect(object.value).to.be.a('number')
11+
expect(object.type).to.be.a('string')
12+
13+
expect(object.value).to.equal(10)
14+
expect(object.type).to.equal('px')
15+
})
16+
17+
it('Should parse strings', () => {
18+
let object = parser.parse('10')
19+
20+
expect(object.value).to.be.a('number')
21+
expect(object.type).to.be.a('string')
22+
23+
expect(object.value).to.equal(10)
24+
expect(object.type).to.equal('px')
25+
})
26+
27+
it ('Should parse "auto" string, auto => {type: "auto", value: 0}', () => {
28+
let object = parser.parse('auto')
29+
30+
expect(object.value).to.equal(0)
31+
expect(object.type).to.equal('auto')
32+
})
33+
34+
it ('Should parse wrong types', () => {
35+
let nullValue = parser.parse(null)
36+
let booleanValue = parser.parse(false)
37+
38+
expect(nullValue.value).to.equal(null)
39+
expect(nullValue.type).to.equal('')
40+
41+
expect(booleanValue.value).to.equal(false)
42+
expect(booleanValue.type).to.equal('')
43+
})
44+
})
45+
46+
describe('Parsing suffixed string', () => {
47+
it ('Should parse "px"', () => {
48+
let object = parser.parse('10px')
49+
50+
expect(object.value).to.equal(10)
51+
expect(object.type).to.equal('px')
52+
})
53+
54+
it ('Should parse "%"', () => {
55+
let object = parser.parse('10%')
56+
57+
expect(object.value).to.equal(10)
58+
expect(object.type).to.equal('%')
59+
})
60+
61+
it ('Should not parse "%px"', () => {
62+
let object = parser.parse('10%px')
63+
64+
expect(object.value).to.be.a('string')
65+
expect(object.type).to.equal('')
66+
})
67+
})
68+
})
69+
})

test/unit/tests.webpack.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
var testsContext = require.context('.', true, /\.spec$/)
2+
testsContext.keys().forEach(testsContext)

test/unit/util.spec.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var util = require('../../src/util')
2+
var { expect } = require('chai')
3+
4+
describe('util.js', () => {
5+
describe('#inRange', () => {
6+
it('Should return the source value (in the range)', () => {
7+
let value = util.inRange(-10, 10, 0)
8+
expect(value).to.equal(0)
9+
})
10+
11+
it('Should not be equal to the source value (outside the range)', () => {
12+
let value = util.inRange(-10, 10, -100)
13+
expect(value).not.to.equal(-100)
14+
})
15+
16+
it('Should replace source value with upper limit', () => {
17+
let value = util.inRange(0, 10, 30)
18+
expect(value).to.equal(10)
19+
})
20+
21+
it('Should replace source value with lower limit', () => {
22+
let value = util.inRange(1, 10, -1)
23+
expect(value).to.equal(1)
24+
})
25+
})
26+
})

0 commit comments

Comments
 (0)