UNPKG

dcos-dygraphs

Version:

dygraphs is a fast, flexible open source JavaScript charting library.

123 lines (101 loc) 3.47 kB
/** * @fileoverview Test cases for DygraphOptions. */ import Dygraph from '../../src/dygraph'; import DygraphOptions from '../../src/dygraph-options'; import OPTIONS_REFERENCE from '../../src/dygraph-options-reference'; describe("dygraph-options-tests", function() { cleanupAfterEach(); var graph; beforeEach(function() { graph = document.getElementById("graph"); }); /* * Pathalogical test to ensure getSeriesNames works */ it('testGetSeriesNames', function() { var opts = { width: 480, height: 320 }; var data = "X,Y,Y2,Y3\n" + "0,-1,0,0"; // Kind of annoying that you need a DOM to test the object. var g = new Dygraph(graph, data, opts); // We don't need to get at g's attributes_ object just // to test DygraphOptions. var o = new DygraphOptions(g); assert.deepEqual(["Y", "Y2", "Y3"], o.seriesNames()); }); /* * Ensures that even if logscale is set globally, it doesn't impact the * x axis. */ it('testGetLogscaleForX', function() { var opts = { width: 480, height: 320 }; var data = "X,Y,Y2,Y3\n" + "1,-1,2,3"; // Kind of annoying that you need a DOM to test the object. var g = new Dygraph(graph, data, opts); assert.isFalse(!!g.getOptionForAxis('logscale', 'x')); assert.isFalse(!!g.getOptionForAxis('logscale', 'y')); g.updateOptions({ logscale : true }); assert.isFalse(!!g.getOptionForAxis('logscale', 'x')); assert.isTrue(!!g.getOptionForAxis('logscale', 'y')); }); // Helper to gather all warnings emitted by Dygraph constructor. // Removes everything after the first open parenthesis in each warning. // Returns them in a (possibly empty) list. var getWarnings = function(div, data, opts) { var warnings = []; var oldWarn = console.warn; console.warn = function(message) { warnings.push(message.replace(/ \(.*/, '')); }; try { new Dygraph(graph, data, opts); } catch (e) { } console.warn = oldWarn; return warnings; }; it('testLogWarningForNonexistentOption', function() { if (!OPTIONS_REFERENCE) { return; // this test won't pass in non-debug mode. } var data = "X,Y,Y2,Y3\n" + "1,-1,2,3"; var expectWarning = function(opts, badOptionName) { DygraphOptions.resetWarnings_(); var warnings = getWarnings(graph, data, opts); assert.deepEqual(['Unknown option ' + badOptionName], warnings); }; var expectNoWarning = function(opts) { DygraphOptions.resetWarnings_(); var warnings = getWarnings(graph, data, opts); assert.deepEqual([], warnings); }; expectNoWarning({}); expectWarning({nonExistentOption: true}, 'nonExistentOption'); expectWarning({series: {Y: {nonExistentOption: true}}}, 'nonExistentOption'); // expectWarning({Y: {nonExistentOption: true}}); expectWarning({axes: {y: {anotherNonExistentOption: true}}}, 'anotherNonExistentOption'); expectWarning({highlightSeriesOpts: {anotherNonExistentOption: true}}, 'anotherNonExistentOption'); expectNoWarning({highlightSeriesOpts: {strokeWidth: 20}}); expectNoWarning({strokeWidth: 20}); }); it('testOnlyLogsEachWarningOnce', function() { if (!OPTIONS_REFERENCE) { return; // this test won't pass in non-debug mode. } var data = "X,Y,Y2,Y3\n" + "1,-1,2,3"; var warnings1 = getWarnings(graph, data, {nonExistent: true}); var warnings2 = getWarnings(graph, data, {nonExistent: true}); assert.deepEqual(['Unknown option nonExistent'], warnings1); assert.deepEqual([], warnings2); }); });