var describe = window.describe, expect = window.expect, it = window.it, beforeEach = window.beforeEach; describe('c3 chart interaction', function () { 'use strict'; var chart, d3; var args = { 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) { if (typeof chart === 'undefined') { window.initDom(); } chart = window.c3.generate(args); d3 = chart.internal.d3; chart.internal.d3.select('.jasmine_html-reporter').style('display', 'none'); window.setTimeout(function () { done(); }, 10); }); describe('generate event rects', function () { describe('custom x', function () { it('should generate bar chart', function () { args = { data: { x: 'x', columns: [ ['x', 0, 1000, 3000, 10000], ['data', 10, 10, 10, 10] ], type: 'bar' } }; expect(true).toBeTruthy(); }); it('should have 4 event rects properly', function () { var lefts = [77.5, 137, 203.5, 402.5], widths = [59.5, 66.5, 199, 191.5]; d3.selectAll('.c3-event-rect').each(function (d, i) { var box = d3.select(this).node().getBoundingClientRect(); expect(box.left).toBe(lefts[i]); expect(box.width).toBe(widths[i]); }); }); it('should generate bar chart with only one data', function () { args = { data: { x: 'x', columns: [ ['x', 0], ['data', 10] ], type: 'bar' } }; expect(true).toBeTruthy(); }); it('should have 1 event rects properly', function () { var eventRects = d3.selectAll('.c3-event-rect'); expect(eventRects.size()).toBe(1); eventRects.each(function () { var box = d3.select(this).node().getBoundingClientRect(); expect(box.left).toBe(40.5); expect(box.width).toBe(590); }); }); }); describe('timeseries', function () { it('should generate line chart with timeseries', function () { args = { data: { x: 'x', columns: [ ['x', '20140101', '20140201', '20140210', '20140301'], ['data', 10, 10, 10, 10] ] } }; expect(true).toBeTruthy(); }); it('should have 4 event rects properly', function () { var lefts = [43.5, 191, 349, 494], widths = [147.5, 158, 145, 134]; d3.selectAll('.c3-event-rect').each(function (d, i) { var box = d3.select(this).node().getBoundingClientRect(); expect(box.left).toBe(lefts[i]); expect(box.width).toBe(widths[i]); }); }); it('should generate line chart with only 1 data timeseries', function () { args = { data: { x: 'x', columns: [ ['x', '20140101'], ['data', 10] ] } }; expect(true).toBeTruthy(); }); it('should have 1 event rects properly', function () { var eventRects = d3.selectAll('.c3-event-rect'); expect(eventRects.size()).toBe(1); eventRects.each(function () { var box = d3.select(this).node().getBoundingClientRect(); expect(box.left).toBe(40.5); expect(box.width).toBe(590); }); }); }); }); });