diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..5e1957b
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+ - "6"
+after_success:
+ - bash <(curl -s https://codecov.io/bash)
diff --git a/package.json b/package.json
index 671ad60..421253f 100644
--- a/package.json
+++ b/package.json
@@ -20,8 +20,8 @@
"build": "node build/build.js",
"unit": "karma start test/unit/karma.conf.js --single-run",
"e2e": "node test/e2e/runner.js",
- "test": "npm run unit && npm run e2e",
- "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
+ "test": "npm run unit",
+ "lint": "eslint --ext .js,.vue src test/unit/specs"
},
"dependencies": {
"babel-runtime": "^6.0.0",
diff --git a/test/unit/specs/Bar.spec.js b/test/unit/specs/Bar.spec.js
new file mode 100644
index 0000000..733f56c
--- /dev/null
+++ b/test/unit/specs/Bar.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import BarChart from 'src/examples/BarExample'
+
+describe('BarChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { BarChart }
+ })
+ expect(vm.$el.querySelector('#bar-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/Bubble.spec.js b/test/unit/specs/Bubble.spec.js
new file mode 100644
index 0000000..e68a5c7
--- /dev/null
+++ b/test/unit/specs/Bubble.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import BubbleChart from 'src/examples/BubbleExample'
+
+describe('BubbleChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { BubbleChart }
+ })
+ expect(vm.$el.querySelector('#bubble-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/Doughnut.spec.js b/test/unit/specs/Doughnut.spec.js
new file mode 100644
index 0000000..bd38658
--- /dev/null
+++ b/test/unit/specs/Doughnut.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import DoughnutChart from 'src/examples/DoughnutExample'
+
+describe('DoughnutChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { DoughnutChart }
+ })
+ expect(vm.$el.querySelector('#doughnut-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/Line.spec.js b/test/unit/specs/Line.spec.js
new file mode 100644
index 0000000..fdf9b79
--- /dev/null
+++ b/test/unit/specs/Line.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import LineChart from 'src/examples/LineExample'
+
+describe('LineChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { LineChart }
+ })
+ expect(vm.$el.querySelector('#line-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/Pie.spec.js b/test/unit/specs/Pie.spec.js
new file mode 100644
index 0000000..f99ecbc
--- /dev/null
+++ b/test/unit/specs/Pie.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import PieChart from 'src/examples/PieExample'
+
+describe('PieChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { PieChart }
+ })
+ expect(vm.$el.querySelector('#pie-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/PolarArea.spec.js b/test/unit/specs/PolarArea.spec.js
new file mode 100644
index 0000000..25304ce
--- /dev/null
+++ b/test/unit/specs/PolarArea.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import PolarChart from 'src/examples/PolarAreaExample'
+
+describe('PolarChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { PolarChart }
+ })
+ expect(vm.$el.querySelector('#polar-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/Radar.spec.js b/test/unit/specs/Radar.spec.js
new file mode 100644
index 0000000..6060c09
--- /dev/null
+++ b/test/unit/specs/Radar.spec.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import RadarChart from 'src/examples/RadarExample'
+
+describe('RadarChart', () => {
+ it('should render a canvas', () => {
+ const vm = new Vue({
+ el: 'body',
+ replace: false,
+ template: '',
+ components: { RadarChart }
+ })
+ expect(vm.$el.querySelector('#radar-chart')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('undefined')
+ expect(vm.$el.querySelector('canvas')).not.to.be.an('null')
+ expect(vm.$el.querySelector('canvas')).to.exist
+ })
+})
diff --git a/test/unit/specs/helpers/options.spec.js b/test/unit/specs/helpers/options.spec.js
new file mode 100644
index 0000000..d05ad75
--- /dev/null
+++ b/test/unit/specs/helpers/options.spec.js
@@ -0,0 +1,30 @@
+import { mergeOptions } from 'src/helpers/options'
+
+describe('mergeOptions.js', () => {
+ const a = {
+ a: 'a',
+ b: 'a'
+ }
+
+ const b = {
+ a: 'b',
+ b: 'b'
+ }
+
+ const c = {
+ c: 'c'
+ }
+
+ it('should replace old a and b if a and b are new', () => {
+ let ab = mergeOptions(a, b)
+ expect(ab).to.have.property('a').and.to.equal('b')
+ expect(ab).to.have.property('b').and.to.equal('b')
+ })
+
+ it('should add c if c is new', () => {
+ let ac = mergeOptions(a, c)
+ expect(ac).to.have.property('a').and.to.equal('a')
+ expect(ac).to.have.property('b').and.to.equal('a')
+ expect(ac).to.have.property('c').and.to.equal('c')
+ })
+})