You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.2 KiB
125 lines
3.2 KiB
1 year ago
|
import { d3, initChart } from './c3-helper'
|
||
|
|
||
|
describe('c3 api grid', function() {
|
||
|
'use strict'
|
||
|
|
||
|
var chart, args
|
||
|
|
||
|
beforeEach(function(done) {
|
||
|
chart = initChart(chart, args, done)
|
||
|
})
|
||
|
|
||
|
describe('ygrid.add and ygrid.remove', function() {
|
||
|
beforeAll(function() {
|
||
|
args = {
|
||
|
data: {
|
||
|
columns: [['data1', 30, 200, 100, 400, 150, 250]]
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
it('updates y grids', function(done) {
|
||
|
var main = chart.internal.main,
|
||
|
expectedGrids = [
|
||
|
{
|
||
|
value: 100,
|
||
|
text: 'Pressure Low'
|
||
|
},
|
||
|
{
|
||
|
value: 200,
|
||
|
text: 'Pressure High'
|
||
|
}
|
||
|
],
|
||
|
grids
|
||
|
|
||
|
// Call ygrids.add
|
||
|
chart.ygrids.add(expectedGrids)
|
||
|
setTimeout(function() {
|
||
|
grids = main.selectAll('.c3-ygrid-line')
|
||
|
expect(grids.size()).toBe(expectedGrids.length)
|
||
|
grids.each(function(d, i) {
|
||
|
var y = +d3
|
||
|
.select(this)
|
||
|
.select('line')
|
||
|
.attr('y1'),
|
||
|
text = d3
|
||
|
.select(this)
|
||
|
.select('text')
|
||
|
.text(),
|
||
|
expectedY = Math.round(chart.internal.y(expectedGrids[i].value)),
|
||
|
expectedText = expectedGrids[i].text
|
||
|
expect(y).toBe(expectedY)
|
||
|
expect(text).toBe(expectedText)
|
||
|
})
|
||
|
|
||
|
// Call ygrids.remove
|
||
|
chart.ygrids.remove(expectedGrids)
|
||
|
setTimeout(function() {
|
||
|
grids = main.selectAll('.c3-ygrid-line')
|
||
|
expect(grids.size()).toBe(0)
|
||
|
}, 500)
|
||
|
}, 500)
|
||
|
|
||
|
setTimeout(function() {
|
||
|
done()
|
||
|
}, 1200)
|
||
|
})
|
||
|
|
||
|
it('updates x ygrids even if zoomed', function(done) {
|
||
|
var main = chart.internal.main,
|
||
|
expectedGrids = [
|
||
|
{
|
||
|
value: 0,
|
||
|
text: 'Pressure Low'
|
||
|
},
|
||
|
{
|
||
|
value: 1,
|
||
|
text: 'Pressure High'
|
||
|
}
|
||
|
],
|
||
|
grids,
|
||
|
domain
|
||
|
|
||
|
chart.zoom([0, 2])
|
||
|
setTimeout(function() {
|
||
|
// Call xgrids
|
||
|
chart.xgrids(expectedGrids)
|
||
|
setTimeout(function() {
|
||
|
grids = main.selectAll('.c3-xgrid-line')
|
||
|
expect(grids.size()).toBe(expectedGrids.length)
|
||
|
grids.each(function(d, i) {
|
||
|
var x = +d3
|
||
|
.select(this)
|
||
|
.select('line')
|
||
|
.attr('x1'),
|
||
|
text = d3
|
||
|
.select(this)
|
||
|
.select('text')
|
||
|
.text(),
|
||
|
expectedX = Math.round(chart.internal.x(expectedGrids[i].value)),
|
||
|
expectedText = expectedGrids[i].text
|
||
|
expect(x).toBe(expectedX)
|
||
|
expect(text).toBe(expectedText)
|
||
|
})
|
||
|
|
||
|
// check if it was not rescaled
|
||
|
domain = chart.internal.y.domain()
|
||
|
expect(domain[0]).toBeLessThan(0)
|
||
|
expect(domain[1]).toBeGreaterThan(400)
|
||
|
|
||
|
// Call xgrids.remove
|
||
|
chart.xgrids.remove(expectedGrids)
|
||
|
setTimeout(function() {
|
||
|
grids = main.selectAll('.c3-xgrid-line')
|
||
|
expect(grids.size()).toBe(0)
|
||
|
}, 500) // for xgrids.remove()
|
||
|
}, 500) // for xgrids()
|
||
|
}, 500) // for zoom
|
||
|
|
||
|
setTimeout(function() {
|
||
|
done()
|
||
|
}, 1700)
|
||
|
})
|
||
|
})
|
||
|
})
|