Skip to content

Commit 8cfde38

Browse files
committed
Create test environment
1 parent f369c90 commit 8cfde38

File tree

7 files changed

+190
-6
lines changed

7 files changed

+190
-6
lines changed

.eslintrc.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = {
2+
root: true,
23
"env": {
34
"browser": true,
45
"commonjs": true,
@@ -10,7 +11,7 @@ module.exports = {
1011
"sourceType": "module"
1112
},
1213
"plugins": [
13-
"vue"
14+
"html"
1415
],
1516
"rules": {
1617
"indent": [

.gitignore

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
/node_modules
2-
/test/specs.js
3-
.DS_Store
1+
.DS_Store
2+
node_modules/
3+
npm-debug.log
4+
selenium-debug.log
5+
test/unit/coverage
6+
test/e2e/reports

package.json

+37-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22
"name": "vue-form-generator",
33
"version": "0.1.0",
44
"description": "A schema-based form generator component for Vue.js",
5+
"homepage": "https://github.com/icebob/vue-form-generator",
56
"main": "dist/vue-form-generator.js",
67
"scripts": {
78
"build": "webpack --config webpack.build.config.js",
89
"dev": "webpack-dev-server --config webpack.dev.config.js --inline --hot --content-base dev/",
910
"lint": "eslint --ext=.js,.vue src",
10-
"test": "webpack --config test/webpack.config.js"
11+
"coverage": "set TEST_TYPE=coverage & karma start karma.config.js",
12+
"unit": "karma start test/unit/karma.conf.js --single-run",
13+
"e2e": "node test/e2e/runner.js",
14+
"test": "npm run lint && npm run unit && npm run e2e",
15+
"ci": "karma start test/unit/karma.conf.js --auto-watch --no-single-run --reporters=dots"
1116
},
1217
"keywords": [
1318
"vue",
@@ -17,33 +22,63 @@
1722
"schema",
1823
"json"
1924
],
25+
"files": [
26+
"dist/vue-form-generator.js",
27+
"dist/vue-form-generator.min.js",
28+
"src"
29+
],
2030
"author": "Icebob",
2131
"license": "MIT",
2232
"devDependencies": {
2333
"babel-core": "6.7.7",
2434
"babel-loader": "6.2.4",
35+
"babel-plugin-espower": "2.1.2",
2536
"babel-plugin-transform-runtime": "6.7.5",
2637
"babel-preset-es2015": "6.6.0",
2738
"babel-preset-stage-0": "6.5.0",
2839
"babel-runtime": "5.8.38",
40+
"chai": "3.5.0",
2941
"css-loader": "0.23.1",
3042
"eslint": "2.9.0",
43+
"eslint-friendly-formatter": "2.0.4",
44+
"eslint-loader": "1.3.0",
45+
"eslint-plugin-html": "1.4.0",
3146
"eslint-plugin-vue": "0.1.1",
3247
"faker": "3.1.0",
48+
"inject-loader": "2.0.1",
49+
"isparta-loader": "2.0.0",
3350
"jade": "1.11.0",
3451
"jade-loader": "0.8.0",
52+
"karma": "0.13.9",
53+
"karma-chai": "0.1.0",
54+
"karma-chrome-launcher": "1.0.1",
55+
"karma-coverage": "0.5.5",
56+
"karma-mocha": "0.2.2",
57+
"karma-phantomjs-launcher": "1.0.0",
58+
"karma-sinon-chai": "1.2.0",
59+
"karma-sourcemap-loader": "0.3.7",
60+
"karma-spec-reporter": "0.0.26",
61+
"karma-webpack": "1.7.0",
3562
"lodash": "4.11.1",
63+
"lolex": "1.4.0",
64+
"mocha": "2.4.5",
65+
"mocha-generators": "1.2.0",
66+
"mocha-loader": "0.7.1",
3667
"moment": "2.13.0",
3768
"node-sass": "3.6.0",
69+
"phantomjs-prebuilt": "2.1.3",
3870
"sass-loader": "3.2.0",
71+
"sinon": "1.17.4",
72+
"sinon-chai": "2.8.0",
3973
"style-loader": "0.13.1",
4074
"vue": "1.0.21",
4175
"vue-hot-reload-api": "1.3.2",
4276
"vue-html-loader": "1.2.2",
4377
"vue-loader": "8.2.3",
4478
"vue-style-loader": "1.0.0",
4579
"webpack": "1.13.0",
46-
"webpack-dev-server": "1.14.1"
80+
"webpack-dev-server": "1.14.1",
81+
"webpack-merge": "0.12.0"
4782
},
4883
"dependencies": {
4984
"joi": "8.0.5",

test/unit/index.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// require all test files (files that ends with .spec.js)
2+
var testsContext = require.context('./specs', true, /\.spec$/);
3+
testsContext.keys().forEach(testsContext);
4+
5+
/*
6+
// require all src files except main.js for coverage.
7+
// you can also change this to match only the subset of files that
8+
// you want coverage for.
9+
var srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/)
10+
srcContext.keys().forEach(srcContext)
11+
*/

test/unit/karma.conf.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
var wsConfig = require('./webpack.test.config');
2+
3+
module.exports = function(config) {
4+
var settings = {
5+
// base path that will be used to resolve all patterns (eg. files, exclude)
6+
basePath: '',
7+
8+
browsers: ['PhantomJS'],
9+
10+
reporters: ['spec', 'coverage'],
11+
12+
frameworks: ['mocha', 'chai'/*, 'sinon-chai'*/],
13+
14+
files: ['./index.js'],
15+
16+
exclude: [],
17+
18+
preprocessors: {
19+
'./index.js': ['webpack', 'sourcemap']
20+
},
21+
22+
webpack: wsConfig,
23+
24+
webpackMiddleware: {
25+
noInfo: true
26+
},
27+
28+
port: 9876,
29+
30+
colors: true,
31+
32+
logLevel: config.LOG_INFO,
33+
34+
autoWatch: false,
35+
36+
singleRun: true,
37+
38+
coverageReporter: {
39+
dir: './coverage',
40+
reporters: [
41+
{ type: 'lcov', subdir: '.' },
42+
{ type: 'text-summary' }
43+
]
44+
}
45+
}
46+
47+
config.set(settings);
48+
}

test/unit/specs/test.spec.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { expect } from "chai";
2+
3+
import VueFormGenerator from "src/index";
4+
5+
describe("VueFormGenerator", () => {
6+
7+
it("class properties", () => {
8+
9+
expect(true).to.be.true;
10+
11+
expect(VueFormGenerator).to.be.exist;
12+
expect(VueFormGenerator).to.have.property("component");
13+
expect(VueFormGenerator).to.have.property("schema");
14+
expect(VueFormGenerator).to.have.property("validators");
15+
16+
});
17+
18+
})

test/unit/webpack.test.config.js

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
var path = require("path");
2+
var webpack = require('webpack');
3+
4+
module.exports = {
5+
devtool: '#inline-source-map',
6+
7+
module: {
8+
loaders: [
9+
{
10+
"test": /\.js?$/,
11+
"exclude": /node_modules/,
12+
"loader": "babel",
13+
"query": {
14+
"presets": [
15+
"es2015",
16+
"stage-0"
17+
],
18+
"plugins": []
19+
}
20+
},
21+
{
22+
"test": /\.css?$/,
23+
"loader": "style!css"
24+
},
25+
{
26+
"test": /\.scss?$/,
27+
"loader": "style!css!sass"
28+
},
29+
{
30+
"test": /\.jade?$/,
31+
"loader": "jade"
32+
},
33+
{
34+
"test": /\.vue?$/,
35+
"loader": "vue"
36+
},
37+
{
38+
test: /\.(woff2?|svg)$/,
39+
loader: 'url'
40+
//loader: 'url?limit=10000'
41+
},
42+
{
43+
test: /\.(ttf|eot)$/,
44+
loader: 'url'
45+
}
46+
]
47+
},
48+
49+
resolve: {
50+
packageAlias: 'browser',
51+
alias: {
52+
'src': path.resolve(__dirname, '../../src')
53+
}
54+
},
55+
56+
plugins: [
57+
],
58+
59+
vue: {
60+
autoprefixer: {
61+
browsers: ['last 2 versions']
62+
}/*,
63+
loaders: {
64+
js: 'isparta'
65+
}*/
66+
}
67+
68+
};

0 commit comments

Comments
 (0)