Highcharts Export CSV Unit Tests

by Torstein Hønsi

HTML

<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/highcharts-more.js"></script>
<script src="http://code.highcharts.com/modules/heatmap.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script src="http://highcharts.github.io/export-csv/export-csv.js"></script>
<script src="http://code.jquery.com/qunit/qunit-1.15.0.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/qunit/qunit-1.15.0.css" />


<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div id="container" style="height: 300px; margin-top: 2em"></div>
<pre id="test1" class="data">"Category","Series 1"
"Jan",29.9
"Feb",71.5
"Mar",106.4
"Apr",129.2
"May",144
"Jun",176
"Jul",135.6
"Aug",148.5
"Sep",216.4
"Oct",194.1
"Nov",95.6
"Dec",54.4</pre>

<pre id="test2" class="data">"DateTime","Series 1"
"2014-01-01 00:00:00",29.9
"2014-01-02 00:00:00",71.5
"2014-01-03 00:00:00",106.4
"2014-01-04 00:00:00",129.2
"2014-01-05 00:00:00",144
"2014-01-06 00:00:00",176
"2014-01-07 00:00:00",135.6
"2014-01-08 00:00:00",148.5
"2014-01-09 00:00:00",216.4
"2014-01-10 00:00:00",194.1
"2014-01-11 00:00:00",95.6
"2014-01-12 00:00:00",54.4</pre>

<pre id="datetime-multi" class="data">"DateTime","Series 1","Series 2","Series 3","Series 4"
"2014-01-01 00:00:00",1,2,3,4
"2014-01-02 00:00:00",2,3,4,5
"2014-01-03 00:00:00",3,4,5,6
"2014-01-04 00:00:00",4,5,6,7</pre>

<pre id="test3" class="data">"Category","Series 1"
0,29.9
1,71.5
2,106.4
3,129.2
4,144
5,176
6,135.6
7,148.5
8,216.4
9,194.1
10,95.6
11,54.4</pre>

<pre id="pie">"Category","Series 1"
"Apples",1
"Pears",2
"Oranges",3</pre>

<pre id="test3" class="data">"Category","Series 1"
0,29.9
1,71.5
2,106.4
3,129.2
4,144
5,176
6,135.6
7,148.5
8,216.4
9,194.1
10,95.6
11,54.4</pre>

CSS

.data {
    display: none;
}

JavaScript

var chart;




QUnit.test("Categorized", function (assert) {
    
    $('#container').highcharts({

        title: {
            text: 'Categorized chart'
        },
    
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
    
        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]
    
    });
    assert.equal(
        $('#container').highcharts().getCSV(),
        document.getElementById('test1').innerHTML,
        "Basic categorized content"
    );
    
    
    $('#container').highcharts().addSeries({ data: [1,2,3,4,5,6,7,7], visible: false });
    
    assert.equal(
        $('#container').highcharts().getCSV(),
        document.getElementById('test1').innerHTML,
        "Added invisible series"
    );
    
    
    $('#container').highcharts().destroy();
});


QUnit.test("Named points", function (assert) {
    
    $('#container').highcharts({

        title: {
            text: 'Named points'
        },
    
        xAxis: {
            type: 'category'
        },
    
        series: [{
            data: [
                ['Apples', 1], 
                ['Pears', 2], 
                ['Oranges', 3]
            ]
        }]
    
    });
    assert.equal(
        $('#container').highcharts().getCSV(),
        document.getElementById('pie').innerHTML,
        "Named points"
    );    
    
    $('#container').highcharts().destroy();
});




QUnit.test("Datetime", function (assert) {
    $('#container').highcharts({

        title: {
            text: 'Datetime chart'
        },
    
        xAxis: {
            type: 'datetime'
        },
    
        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
            pointStart: Date.UTC(2014, 0, 1),
            pointInterval: 24 * 36e5
        }]
    
    });
    assert.equal(
       ...