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.
124 lines
3.2 KiB
124 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) |
|
}) |
|
}) |
|
})
|
|
|