| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import { d3, initChart } from './c3-helper'
- describe('c3 chart title', function() {
- 'use strict'
- var chart, config
- describe('when given a title too long', function() {
- beforeEach(function(done) {
- config = {
- data: {
- columns: [['data1', 30, 200, 100, 400, 150, 250]]
- },
- title: {
- text: 'this is a very long title'.repeat(10),
- position: 'top-center'
- }
- }
- chart = initChart(chart, config, done)
- })
- it('should not use negative x offset', function() {
- const titleEl = d3.select('.c3-title')
- expect(+titleEl.attr('x')).toBe(0)
- })
- })
- 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 = 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() as any).getBBox().height
- )
- })
- it('renders the title text', function() {
- var titleEl = d3.select('.c3-title')
- expect((titleEl.node() as any).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 = 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() as any).getBBox().height +
- config.title.padding.bottom
- )
- })
- })
- describe('and position left', function() {
- beforeEach(function(done) {
- config = getConfig('top-left')
- chart = 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 = 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)
- })
- })
- })
- })
- })
|