Compare commits

...

19 Commits

Author SHA1 Message Date
Jakub Juszczak
0a04114eb0 💎 Release new version 2.1.0
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-09-23 15:03:59 +02:00
Jakub Juszczak
b14b107890 Add travis config
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-09-23 14:55:16 +02:00
Jakub Juszczak
13ff782ec8 🐛 Fix tests
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-09-23 14:52:37 +02:00
Jakub Juszczak
975a804570 Add chartId as prop and fix width and height props
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-09-23 13:29:03 +02:00
Jakub Juszczak
3c252ce904 Add bubble-chart example
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-09-23 13:28:38 +02:00
Jakub Juszczak
74cedd4ec4 Add tests 2016-09-23 12:59:17 +02:00
Jakub Juszczak
d6c3f50ba8 Add chart type Bubble 2016-09-23 12:59:00 +02:00
Jakub Juszczak
d7003306d1 Move examples into src for better testing 2016-09-23 12:49:09 +02:00
Jakub Juszczak
c0e93cd824 📝 Update README 2016-08-23 21:11:24 +02:00
Jakub Juszczak
5d34181e8e 💎 Release new version 2.0.0-alpha 2016-08-23 20:43:36 +02:00
Jakub Juszczak
1323791c52 Add vue 2.0 build files 2016-08-23 20:34:41 +02:00
Jakub Juszczak
5248534991 📝 Update README
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-23 20:32:47 +02:00
Jakub Juszczak
d3cb01b76c ⬆️ Update dependency chartjs to 2.2.1
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-23 20:31:19 +02:00
Jakub Juszczak
b374370706 Update examples
Change deprecated ready() method to mounted()
Change render() method to renderChart() method

Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-23 20:28:24 +02:00
Jakub Juszczak
60627650a3 ⬆️ Update dependency vue 2.0
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-23 20:26:32 +02:00
Jakub Juszczak
92982ef2ac Change deprecated v-el to ref
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-23 20:06:50 +02:00
Jakub Juszczak
012b9a82bf Change render() method name to renderChart
This way it does not conflict with the vue 2.0 render function.

Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-23 20:01:38 +02:00
Jakub Juszczak
e3f9936049 📝 Update CHANGELOG to 1.1.0
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-21 14:42:16 +02:00
Jakub Juszczak
2f66dd9a44 📝 📖 🐛 Fix README and Template
Signed-off-by: Jakub Juszczak <netghost03@gmail.com>
2016-08-21 14:41:59 +02:00
34 changed files with 488 additions and 92 deletions

View File

@@ -3,7 +3,7 @@ Thank you for contributing vue-chartjs!
Please follow this steps:
1. Fork it ( https://github.com/aapertureless/vue-chartjs/fork )
1. Fork it ( https://github.com/apertureless/vue-chartjs/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)

5
.travis.yml Normal file
View File

@@ -0,0 +1,5 @@
language: node_js
node_js:
- "6"
after_success:
- bash <(curl -s https://codecov.io/bash)

View File

@@ -1,8 +1,11 @@
# Change Log
## [Unreleased](https://github.com/apertureless/vue-chartjs/tree/HEAD)
## [1.1.0](https://github.com/apertureless/vue-chartjs/tree/1.1.0) (2016-08-21)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.0.3...1.1.0)
[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.0.3...HEAD)
**Implemented enhancements:**
- Use Vue.util.mergeOptions to merge default options with user's options [\#5](https://github.com/apertureless/vue-chartjs/issues/5)
**Merged pull requests:**

View File

@@ -1,12 +1,14 @@
# Vue-ChartJs
[![npm version](https://badge.fury.io/js/vue-chartjs.svg)](https://badge.fury.io/js/vue-chartjs) ![npm dependencies](https://david-dm.org/apertureless/vue-chartjs.svg)
[![npm version](https://badge.fury.io/js/vue-chartjs.svg)](https://badge.fury.io/js/vue-chartjs) ![npm dependencies](https://david-dm.org/apertureless/vue-chartjs.svg) [![codecov](https://codecov.io/gh/apertureless/vue-chartjs/branch/master/graph/badge.svg)](https://codecov.io/gh/apertureless/vue-chartjs) [![Build Status](https://travis-ci.org/apertureless/vue-chartjs.svg?branch=master)](https://travis-ci.org/apertureless/vue-chartjs)
> VueJS wrapper for ChartJs
# 🚧 VUE 2.0 WIP ⚠
## Install
Simply run `npm install vue-chartjs`
Simply run `npm install vue-chartjs@next`
## How to use
@@ -26,9 +28,9 @@ Just create your own component.
import { Bar } from 'vue-chartjs'
export default BarChart.extend({
ready () {
mounted () {
// Overwriting base render method with actual data.
this.render({
this.renderChart({
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
datasets: [
{
@@ -58,8 +60,8 @@ import { Line } from 'vue-chartjs'
export default LineChart.extend({
props: [data, options],
ready () {
this.render(this.data, this.options)
mounted () {
this.renderChart(this.data, this.options)
}
})
```
@@ -145,7 +147,7 @@ For detailed explanation on how things work, checkout the [guide](http://vuejs-t
## Contributing
1. Fork it ( https://github.com/aapertureless/vue-chartjs/fork )
1. Fork it ( https://github.com/apertureless/vue-chartjs/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)

View File

@@ -16,6 +16,7 @@ module.exports = {
extensions: ['', '.js', '.vue'],
fallback: [path.join(__dirname, '../node_modules')],
alias: {
'vue': 'vue/dist/vue.js',
'src': path.resolve(__dirname, '../src'),
'BaseCharts': path.resolve(__dirname, '../src/BaseCharts')
}

37
dist/vue-chartjs.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -5,7 +5,9 @@
<title>Vue-ChartJs</title>
</head>
<body>
<div id="app">
<app></app>
</div>
<!-- built files will be auto injected -->
</body>
</html>

View File

@@ -1,6 +1,6 @@
{
"name": "vue-chartjs",
"version": "1.1.0",
"version": "2.1.0",
"description": "Vue wrapper for chart.js",
"author": "Jakub Juszczak <jakub@nextindex.de>",
"repository": {
@@ -20,18 +20,19 @@
"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 test/e2e/specs",
"prepublish": "node build/build.js"
},
"dependencies": {
"babel-runtime": "^6.0.0",
"chart.js": "^2.1.6",
"vue": "^1.0.21"
"babel-runtime": "^6.11.6",
"chart.js": "^2.2.1",
"vue": "^2.0.0-rc.1"
},
"devDependencies": {
"babel-core": "^6.0.0",
"babel-core": "^6.10.4",
"babel-loader": "^6.0.0",
"babel-plugin-transform-runtime": "^6.0.0",
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"chai": "^3.5.0",
@@ -75,11 +76,11 @@
"sinon": "^1.17.3",
"sinon-chai": "^2.8.0",
"url-loader": "^0.5.7",
"vue-hot-reload-api": "^1.2.0",
"vue-html-loader": "^1.0.0",
"vue-loader": "^8.3.0",
"vue-hot-reload-api": "^2.0.6",
"vue-html-loader": "^1.2.3",
"vue-loader": "^9.3.0",
"vue-style-loader": "^1.0.0",
"webpack": "^1.12.2",
"webpack": "^1.13.2",
"webpack-dev-middleware": "^1.4.0",
"webpack-hot-middleware": "^2.6.0",
"webpack-merge": "^0.8.3"

View File

@@ -5,11 +5,15 @@ import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas id="bar-chart" width=width height=height v-el:canvas></canvas>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'bar-chart',
type: String
},
width: {
default: 400,
type: Number
@@ -45,11 +49,11 @@ export default Vue.extend({
},
methods: {
render (data, options) {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$els.canvas.getContext('2d'), {
this.$refs.canvas.getContext('2d'), {
type: 'bar',
data: data,
options: chartOptions

68
src/BaseCharts/Bubble.js Normal file
View File

@@ -0,0 +1,68 @@
import Vue from 'vue'
import Chart from 'chart.js'
import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'bubble-chart',
type: String
},
width: {
default: 400,
type: Number
},
height: {
default: 400,
type: Number
}
},
data () {
return {
defaultOptions: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
},
gridLines: {
display: false
}
}],
xAxes: [ {
gridLines: {
display: false
},
categoryPercentage: 0.5,
barPercentage: 0.2
}]
}
}
}
},
methods: {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$refs.canvas.getContext('2d'), {
type: 'bubble',
data: data,
options: chartOptions
}
)
this._chart.generateLegend()
}
},
beforeDestroy () {
this._chart.destroy()
}
})

View File

@@ -5,11 +5,15 @@ import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas id="doughnut-chart" width=width height=height v-el:canvas></canvas>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'doughnut-chart',
type: String
},
width: {
default: 400,
type: Number
@@ -28,11 +32,11 @@ export default Vue.extend({
},
methods: {
render (data, options) {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$els.canvas.getContext('2d'), {
this.$refs.canvas.getContext('2d'), {
type: 'doughnut',
data: data,
options: chartOptions

View File

@@ -5,11 +5,15 @@ import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas id="line-chart" width=width height=height v-el:canvas></canvas>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'line-chart',
type: String
},
width: {
default: 400,
type: Number
@@ -43,11 +47,11 @@ export default Vue.extend({
},
methods: {
render (data, options) {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$els.canvas.getContext('2d'), {
this.$refs.canvas.getContext('2d'), {
type: 'line',
data: data,
options: chartOptions

View File

@@ -5,11 +5,15 @@ import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas id="pie-chart" width=width height=height v-el:canvas></canvas>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'pie-chart',
type: String
},
width: {
default: 400,
type: Number
@@ -28,11 +32,11 @@ export default Vue.extend({
},
methods: {
render (data, options) {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$els.canvas.getContext('2d'), {
this.$refs.canvas.getContext('2d'), {
type: 'pie',
data: data,
options: chartOptions

View File

@@ -5,11 +5,15 @@ import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas id="polar-chart" width=width height=height v-el:canvas></canvas>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'polar-chart',
type: String
},
width: {
default: 400,
type: Number
@@ -28,11 +32,11 @@ export default Vue.extend({
},
methods: {
render (data, options) {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$els.canvas.getContext('2d'), {
this.$refs.canvas.getContext('2d'), {
type: 'polarArea',
data: data,
options: chartOptions

View File

@@ -5,11 +5,15 @@ import { mergeOptions } from '../helpers/options'
export default Vue.extend({
template: `
<div>
<canvas id="radar-chart" width=width height=height v-el:canvas></canvas>
<canvas :id="chartId" :width="width" :height="height" ref="canvas"></canvas>
</div>
`,
props: {
chartId: {
default: 'radar-chart',
type: String
},
width: {
default: 400,
type: Number
@@ -28,11 +32,11 @@ export default Vue.extend({
},
methods: {
render (data, options) {
renderChart (data, options) {
let chartOptions = mergeOptions(this.defaultOptions, options)
this._chart = new Chart(
this.$els.canvas.getContext('2d'), {
this.$refs.canvas.getContext('2d'), {
type: 'radar',
data: data,
options: chartOptions

View File

@@ -6,19 +6,21 @@
<pie-example></pie-example>
<radar-example></radar-example>
<polar-area-example></polar-area-example>
<bubble-example></bubble-example>
</div>
</template>
<script>
import BarExample from './examples/BarExample'
import LineExample from './examples/LineExample'
import DoughnutExample from './examples/DoughnutExample'
import PieExample from './examples/PieExample'
import RadarExample from './examples/RadarExample'
import PolarAreaExample from './examples/PolarAreaExample'
import BarExample from './BarExample'
import LineExample from './LineExample'
import DoughnutExample from './DoughnutExample'
import PieExample from './PieExample'
import RadarExample from './RadarExample'
import PolarAreaExample from './PolarAreaExample'
import BubbleExample from './BubbleExample'
export default {
components: { BarExample, LineExample, DoughnutExample, PieExample, RadarExample, PolarAreaExample }
components: { BarExample, LineExample, DoughnutExample, PieExample, RadarExample, PolarAreaExample, BubbleExample }
}
</script>

View File

@@ -1,8 +1,8 @@
import BarChart from '../BaseCharts/Bar'
export default BarChart.extend({
ready () {
this.render({
mounted () {
this.renderChart({
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
datasets: [
{

View File

@@ -0,0 +1,52 @@
import BubbleChart from '../BaseCharts/Bubble'
export default BubbleChart.extend({
mounted () {
this.renderChart({
datasets: [
{
label: 'Data One',
backgroundColor: '#f87979',
data: [
{
x: 20,
y: 25,
r: 5
},
{
x: 40,
y: 10,
r: 10
},
{
x: 30,
y: 22,
r: 30
}
]
},
{
label: 'Data Two',
backgroundColor: '#7C8CF8',
data: [
{
x: 10,
y: 30,
r: 15
},
{
x: 20,
y: 20,
r: 10
},
{
x: 15,
y: 8,
r: 30
}
]
}
]
})
}
})

View File

@@ -1,8 +1,8 @@
import DoughnutChart from '../BaseCharts/Doughnut'
export default DoughnutChart.extend({
ready () {
this.render({
mounted () {
this.renderChart({
labels: ['VueJs', 'EmberJs', 'ReactJs', 'AngularJs'],
datasets: [
{

View File

@@ -1,8 +1,8 @@
import LineChart from '../BaseCharts/Line'
export default LineChart.extend({
ready () {
this.render({
mounted () {
this.renderChart({
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{

View File

@@ -1,8 +1,8 @@
import PieChart from '../BaseCharts/Pie'
export default PieChart.extend({
ready () {
this.render({
mounted () {
this.renderChart({
labels: ['VueJs', 'EmberJs', 'ReactJs', 'AngularJs'],
datasets: [
{

View File

@@ -1,8 +1,8 @@
import PolarAreaChart from '../BaseCharts/PolarArea'
export default PolarAreaChart.extend({
ready () {
this.render({
mounted () {
this.renderChart({
labels: ['Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running'],
datasets: [
{

View File

@@ -1,8 +1,8 @@
import RadarChart from '../BaseCharts/Radar'
export default RadarChart.extend({
ready () {
this.render({
mounted () {
this.renderChart({
labels: ['Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running'],
datasets: [
{

View File

@@ -4,6 +4,7 @@ import Line from './BaseCharts/Line'
import Pie from './BaseCharts/Pie'
import PolarArea from './BaseCharts/PolarArea'
import Radar from './BaseCharts/Radar'
import Bubble from './BaseCharts/Bubble'
const VueCharts = {
Bar,
@@ -11,7 +12,8 @@ const VueCharts = {
Line,
Pie,
PolarArea,
Radar
Radar,
Bubble
}
module.exports = VueCharts

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import BarChart from 'src/examples/BarExample'
describe('BarChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<bar-chart></bar-chart>',
components: { BarChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<bar-chart chartId="barchartprop"></bar-chart>',
components: { BarChart }
}).$mount(el)
expect(vm.$el.querySelector('#barchartprop')).not.to.be.an('undefined')
})
})

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import BubbleChart from 'src/examples/BubbleExample'
describe('BubbleChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<bubble-chart></bubble-chart>',
components: { BubbleChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<bubble-chart chartId="bubblechartprop"></bubble-chart>',
components: { BubbleChart }
}).$mount(el)
expect(vm.$el.querySelector('#bubblechartprop')).not.to.be.an('undefined')
})
})

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import DoughnutChart from 'src/examples/DoughnutExample'
describe('DoughnutChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<doughnut-chart></doughnut-chart>',
components: { DoughnutChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<doughnut-chart chartId="doughnutchartprop"></doughnut-chart>',
components: { DoughnutChart }
}).$mount(el)
expect(vm.$el.querySelector('#doughnutchartprop')).not.to.be.an('undefined')
})
})

View File

@@ -1,12 +0,0 @@
import Vue from 'vue'
import Hello from 'src/components/Hello'
describe('Hello.vue', () => {
it('should render correct contents', () => {
const vm = new Vue({
template: '<div><hello></hello></div>',
components: { Hello }
}).$mount()
expect(vm.$el.querySelector('.hello h1').textContent).to.contain('Hello World!')
})
})

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import LineChart from 'src/examples/LineExample'
describe('LineChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<line-chart></line-chart>',
components: { LineChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<line-chart chartId="linechartprop"></line-chart>',
components: { LineChart }
}).$mount(el)
expect(vm.$el.querySelector('#linechartprop')).not.to.be.an('undefined')
})
})

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import PieChart from 'src/examples/PieExample'
describe('PieChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<pie-chart></pie-chart>',
components: { PieChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<pie-chart chartId="piechartprop"></pie-chart>',
components: { PieChart }
}).$mount(el)
expect(vm.$el.querySelector('#piechartprop')).not.to.be.an('undefined')
})
})

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import PolarChart from 'src/examples/PolarAreaExample'
describe('PolarChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<polar-chart></polar-chart>',
components: { PolarChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<polar-chart chartId="polarchartprop"></polar-chart>',
components: { PolarChart }
}).$mount(el)
expect(vm.$el.querySelector('#polarchartprop')).not.to.be.an('undefined')
})
})

View File

@@ -0,0 +1,31 @@
import Vue from 'vue'
import RadarChart from 'src/examples/RadarExample'
describe('RadarChart', () => {
let el
beforeEach(() => {
el = document.createElement('div')
})
it('should render a canvas', () => {
const vm = new Vue({
template: '<radar-chart></radar-chart>',
components: { RadarChart }
}).$mount(el)
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
})
it('should change id based on prop', () => {
const vm = new Vue({
template: '<radar-chart chartId="rodarchartprop"></radar-chart>',
components: { RadarChart }
}).$mount(el)
expect(vm.$el.querySelector('#rodarchartprop')).not.to.be.an('undefined')
})
})

View File

@@ -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')
})
})