|
|
|
describe('c3 chart title', function () {
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var chart, config;
|
|
|
|
|
|
|
|
describe('when given a title config option', function () {
|
|
|
|
describe('with no padding and no position', function () {
|
|
|
|
beforeEach(function(done) {
|
|
|
|
config = {
|
|
|
|
data: {
|
|
|
|
columns: [
|
|
|
|
['data1', 30, 200, 100, 400, 150, 250]
|
|
|
|
]
|
|
|
|
},
|
|
|
|
title: {
|
|
|
|
text: 'new title'
|
|
|
|
}
|
|
|
|
};
|
|
|
|
chart = window.initChart(chart, config, done);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('renders the title at the default config position', function () {
|
|
|
|
var titleEl = d3.select(".c3-title");
|
|
|
|
expect(+titleEl.attr("x")).toBeCloseTo(294, -2);
|
|
|
|
expect(+titleEl.attr("y")).toEqual(titleEl.node().getBBox().height);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('renders the title text', function () {
|
|
|
|
var titleEl = d3.select(".c3-title");
|
|
|
|
expect(titleEl.node().textContent).toEqual('new title');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('with padding', function () {
|
|
|
|
var config, getConfig = function (titlePosition) {
|
|
|
|
return {
|
|
|
|
data: {
|
|
|
|
columns: [
|
|
|
|
['data1', 30, 200, 100, 400, 150, 250]
|
|
|
|
]
|
|
|
|
},
|
|
|
|
title: {
|
|
|
|
text: 'positioned title',
|
|
|
|
padding: {
|
|
|
|
top: 20,
|
|
|
|
right: 30,
|
|
|
|
bottom: 40,
|
|
|
|
left: 50
|
|
|
|
},
|
|
|
|
position: titlePosition
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
describe('and position center', function () {
|
|
|
|
beforeEach(function(done) {
|
|
|
|
config = getConfig('top-center');
|
|
|
|
chart = window.initChart(chart, config, done);
|
|
|
|
});
|
|
|
|
it('renders the title at the default config position', function () {
|
|
|
|
var titleEl = d3.select(".c3-title");
|
|
|
|
expect(+titleEl.attr("x")).toBeCloseTo(275, -2);
|
|
|
|
expect(+titleEl.attr("y")).toBeCloseTo(34, -1);
|
|
|
|
});
|
|
|
|
it('adds the correct amount of padding to fit the title', function() {
|
|
|
|
expect(chart.internal.getCurrentPaddingTop()).toEqual(
|
|
|
|
config.title.padding.top + d3.select('.c3-title').node().getBBox().height + config.title.padding.bottom
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('and position left', function () {
|
|
|
|
beforeEach(function(done) {
|
|
|
|
config = getConfig('top-left');
|
|
|
|
chart = window.initChart(chart, config, done);
|
|
|
|
});
|
|
|
|
it('renders the title at the default config position', function () {
|
|
|
|
var titleEl = d3.select(".c3-title");
|
|
|
|
expect(+titleEl.attr("x")).toBeCloseTo(50, -1);
|
|
|
|
expect(+titleEl.attr("y")).toBeCloseTo(34, -1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('and position right', function () {
|
|
|
|
beforeEach(function(done) {
|
|
|
|
config = getConfig('top-right');
|
|
|
|
chart = window.initChart(chart, config, done);
|
|
|
|
});
|
|
|
|
it('renders the title at the default config position', function () {
|
|
|
|
var titleEl = d3.select(".c3-title");
|
|
|
|
expect(+titleEl.attr("x")).toBeCloseTo(520, -2);
|
|
|
|
expect(+titleEl.attr("y")).toBeCloseTo(34, -1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|