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.
201 lines
5.0 KiB
201 lines
5.0 KiB
import { d3, initChart } from './c3-helper' |
|
|
|
describe('c3 chart', function() { |
|
'use strict' |
|
|
|
var chart |
|
|
|
var args: any = { |
|
svg: { |
|
classname: 'customclass' |
|
}, |
|
data: { |
|
columns: [ |
|
['data1', 30, 200, 100, 400, 150, 250], |
|
['data2', 50, 20, 10, 40, 15, 25], |
|
['data3', 150, 120, 110, 140, 115, 125] |
|
] |
|
} |
|
} |
|
|
|
beforeEach(function(done) { |
|
chart = initChart(chart, args, done) |
|
}) |
|
|
|
describe('init', function() { |
|
it('should be created', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg).not.toBeNull() |
|
}) |
|
|
|
it('should bind to window focus event', done => { |
|
const addEventListener = window.addEventListener |
|
window.addEventListener = (event, handler) => { |
|
if (event === 'focus') { |
|
setTimeout(() => { |
|
expect(handler).toBe(chart.internal.windowFocusHandler) |
|
window.addEventListener = addEventListener // restore the original |
|
done() |
|
}, 10) |
|
} |
|
} |
|
chart = initChart(chart, args, () => {}) |
|
}) |
|
|
|
describe('should set 3rd party property to Function', function() { |
|
beforeAll(function() { |
|
;(Function.prototype as any).$extIsFunction = true |
|
}) |
|
|
|
it('should be created even if 3rd party property has been set', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg).not.toBeNull() |
|
}) |
|
|
|
it('should be created with a custom class', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg.attr('class')).not.toBeNull() |
|
expect(svg.attr('class')).toBe('customclass') |
|
}) |
|
}) |
|
}) |
|
|
|
describe('size', function() { |
|
it('should have same width', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(+svg.attr('width')).toBe(640) |
|
}) |
|
|
|
it('should have same height', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(+svg.attr('height')).toBe(480) |
|
}) |
|
}) |
|
|
|
describe('call resize and resized callbacks', function() { |
|
beforeAll(function() { |
|
args.bindto = '#chart' |
|
args.axis = { |
|
rotated: true |
|
} |
|
args.resize_var = false |
|
args.resized_var = false |
|
|
|
args.onresize = function() { |
|
args.resize_var = true |
|
} |
|
args.onresized = function() { |
|
args.resized_var = true |
|
} |
|
}) |
|
|
|
it('arbitrary parameters should be false before resize', function() { |
|
expect(args.resize_var).toBe(false) |
|
expect(args.resized_var).toBe(false) |
|
}) |
|
|
|
it('arbitrary parameters should be true after resize', function() { |
|
window.dispatchEvent(new Event('resize')) |
|
expect(args.resize_var).toBe(true) |
|
expect(args.resized_var).toBe(true) |
|
}) |
|
}) |
|
|
|
describe('bindto', function() { |
|
describe('selector', function() { |
|
beforeAll(function() { |
|
d3.select('#chart').html('') |
|
args.bindto = '#chart' |
|
}) |
|
|
|
it('should be created', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg.size()).toBe(1) |
|
}) |
|
}) |
|
|
|
describe('d3.selection object', function() { |
|
beforeAll(function() { |
|
d3.select('#chart').html('') |
|
args.bindto = d3.select('#chart') |
|
}) |
|
it('should be created', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg.size()).toBe(1) |
|
}) |
|
}) |
|
|
|
describe('null', function() { |
|
beforeAll(function() { |
|
d3.select('#chart').html('') |
|
args.bindto = null |
|
}) |
|
|
|
it('should not be created', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg.size()).toBe(0) |
|
}) |
|
}) |
|
|
|
describe('empty string', function() { |
|
beforeAll(function() { |
|
d3.select('#chart').html('') |
|
args.bindto = '' |
|
}) |
|
|
|
it('should not be created', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg.size()).toBe(0) |
|
}) |
|
}) |
|
describe('bind to selector with rotated axis', function() { |
|
beforeAll(function() { |
|
args.bindto = '#chart' |
|
args.axis = { |
|
rotated: true |
|
} |
|
}) |
|
|
|
it('should be created', function() { |
|
var svg = d3.select('#chart svg') |
|
expect(svg.size()).toBe(1) |
|
}) |
|
}) |
|
}) |
|
|
|
describe('empty data', function() { |
|
beforeAll(function() { |
|
args = { |
|
data: { |
|
columns: [['data1'], ['data2']] |
|
} |
|
} |
|
}) |
|
|
|
it('should generate a chart', function() { |
|
var ticks = chart.internal.main.select('.c3-axis-x').selectAll('g.tick') |
|
expect(ticks.size()).toBe(0) |
|
}) |
|
|
|
describe('more empty data', function() { |
|
beforeAll(function() { |
|
args = { |
|
data: { |
|
x: 'x', |
|
columns: [['x'], ['data1'], ['data2']] |
|
}, |
|
axis: { |
|
x: { |
|
type: 'timeseries' |
|
} |
|
} |
|
} |
|
}) |
|
|
|
it('should generate a chart', function() { |
|
var ticks = chart.internal.main.select('.c3-axis-x').selectAll('g.tick') |
|
expect(ticks.size()).toBe(0) |
|
}) |
|
}) |
|
}) |
|
})
|
|
|