| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- import { d3, initChart } from './c3-helper'
- describe('c3 api region', function() {
- 'use strict'
- var chart, args
- beforeEach(function(done) {
- chart = initChart(chart, args, done)
- })
- describe('api.region', function() {
- beforeAll(function() {
- args = {
- data: {
- columns: [['data1', 30, 200, 100, 400, 150, 250]]
- },
- regions: [
- {
- axis: 'y',
- start: 300,
- end: 400,
- class: 'green',
- label: 'Region 1'
- },
- {
- axis: 'y',
- start: 0,
- end: 100,
- class: 'green'
- }
- ]
- }
- })
- it('updates regions', function(done) {
- var main = chart.internal.main,
- expectedRegions = [
- {
- axis: 'y',
- start: 250,
- end: 350,
- class: 'red',
- label: 'Region 1'
- },
- {
- axis: 'y',
- start: 25,
- end: 75,
- class: 'red',
- label: ''
- }
- ],
- regions
- // Call regions API
- chart.regions(expectedRegions)
- setTimeout(function() {
- regions = main.selectAll('.c3-region')
- expect(regions.size()).toBe(expectedRegions.length)
- regions.each(function(d, i) {
- var region = d3.select(this),
- label = region.select('text'),
- y = +region.attr('y'),
- height = +region.attr('height'),
- expectedClass = 'red',
- expectedLabel = expectedRegions[i].label,
- unexpectedClass = 'green',
- expectedStart = Math.round(
- chart.internal.y(expectedRegions[i].start)
- ),
- expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)),
- expectedY = expectedEnd,
- expectedHeight = expectedStart - expectedEnd
- expect(y).toBeCloseTo(expectedY, -1)
- expect(height).toBeCloseTo(expectedHeight, -1)
- expect(region.classed(expectedClass)).toBeTruthy()
- expect(region.classed(unexpectedClass)).toBeFalsy()
- expect(label.text()).toBe(expectedLabel)
- })
- }, 500)
- setTimeout(function() {
- done()
- }, 1000)
- })
- })
- describe('api.region.add', function() {
- beforeAll(function() {
- args = {
- data: {
- columns: [['data1', 30, 200, 100, 400, 150, 250]]
- },
- regions: [
- {
- axis: 'y',
- start: 300,
- end: 400,
- class: 'green'
- },
- {
- axis: 'y',
- start: 0,
- end: 100,
- class: 'green'
- }
- ]
- }
- })
- it('should add regions', function(done) {
- var main = chart.internal.main,
- expectedRegions = [
- {
- axis: 'y',
- start: 300,
- end: 400,
- class: 'green'
- },
- {
- axis: 'y',
- start: 0,
- end: 100,
- class: 'green'
- },
- {
- axis: 'y',
- start: 250,
- end: 350,
- class: 'red'
- },
- {
- axis: 'y',
- start: 25,
- end: 75,
- class: 'red'
- }
- ],
- expectedClasses = ['green', 'green', 'red', 'red'],
- regions
- // Call regions API
- chart.regions(expectedRegions)
- setTimeout(function() {
- regions = main.selectAll('.c3-region')
- expect(regions.size()).toBe(expectedRegions.length)
- regions.each(function(d, i) {
- var region = d3.select(this),
- y = +region.attr('y'),
- height = +region.attr('height'),
- expectedClass = expectedClasses[i],
- expectedStart = Math.round(
- chart.internal.y(expectedRegions[i].start)
- ),
- expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)),
- expectedY = expectedEnd,
- expectedHeight = expectedStart - expectedEnd
- expect(y).toBeCloseTo(expectedY, -1)
- expect(height).toBeCloseTo(expectedHeight, -1)
- expect(region.classed(expectedClass)).toBeTruthy()
- })
- }, 500)
- setTimeout(function() {
- done()
- }, 1000)
- })
- })
- describe('api.region.remove', function() {
- beforeAll(function() {
- args = {
- data: {
- columns: [['data1', 30, 200, 100, 400, 150, 250]]
- },
- regions: [
- {
- axis: 'y',
- start: 300,
- end: 400,
- class: 'green'
- },
- {
- axis: 'y',
- start: 0,
- end: 100,
- class: 'green'
- },
- {
- axis: 'y',
- start: 250,
- end: 350,
- class: 'red'
- }
- ]
- }
- })
- it('should remove regions', function(done) {
- var main = chart.internal.main,
- expectedRegions = [
- {
- axis: 'y',
- start: 250,
- end: 350,
- class: 'red'
- }
- ],
- expectedClasses = ['red'],
- regions
- // Call regions API
- chart.regions(expectedRegions)
- setTimeout(function() {
- regions = main.selectAll('.c3-region')
- expect(regions.size()).toBe(expectedRegions.length)
- regions.each(function(d, i) {
- var region = d3.select(this),
- y = +region.attr('y'),
- height = +region.attr('height'),
- expectedClass = expectedClasses[i],
- expectedStart = Math.round(
- chart.internal.y(expectedRegions[i].start)
- ),
- expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)),
- expectedY = expectedEnd,
- expectedHeight = expectedStart - expectedEnd
- expect(y).toBeCloseTo(expectedY, -1)
- expect(height).toBeCloseTo(expectedHeight, -1)
- expect(region.classed(expectedClass)).toBeTruthy()
- })
- }, 500)
- setTimeout(function() {
- done()
- }, 1000)
- })
- })
- })
|