describe('c3 subchart', function() {
  'use strict'

  let chart

  let args = {
    data: {
      x: 'date',
      columns: [
        [
          'date',
          '2012-12-24',
          '2012-12-25',
          '2012-12-26',
          '2012-12-27',
          '2012-12-28',
          '2012-12-29'
        ],
        ['data1', 30, 200, -100, 400, -150, 250],
        ['data2', 50, 20, 10, 40, 15, 25]
      ],
      groups: [['data1', 'data2']],
      type: 'bar'
    },
    axis: {
      x: {
        type: 'category'
      }
    },
    subchart: {
      show: true
    }
  }

  beforeEach(done => {
    chart = window.initChart(chart, args, done)
  })

  const getChartHeight = () =>
    +chart.internal.svg.select('.c3-event-rect').attr('height') - 1

  describe('api', () => {
    it('can toggle subchart visibility', () => {
      const chartHeightWithSubchart = getChartHeight()

      expect(chart.subchart.isShown()).toBeTruthy()
      expect(chart.internal.svg.selectAll('.c3-axis-x').size()).toEqual(2)
      expect(chart.internal.svg.selectAll('.c3-brush').size()).toEqual(1)

      chart.subchart.hide()

      expect(chart.subchart.isShown()).toBeFalsy()
      expect(chart.internal.svg.selectAll('.c3-axis-x').size()).toEqual(1)
      expect(chart.internal.svg.selectAll('.c3-brush').size()).toEqual(0)
      expect(getChartHeight()).toBeGreaterThan(chartHeightWithSubchart)

      chart.subchart.show()

      expect(chart.subchart.isShown()).toBeTruthy()
      expect(chart.internal.svg.selectAll('.c3-axis-x').size()).toEqual(2)
      expect(chart.internal.svg.selectAll('.c3-brush').size()).toEqual(1)
      expect(getChartHeight()).toEqual(chartHeightWithSubchart)
    })
  })
})
