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

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