diff --git a/test/Configurator.test.js b/test/Configurator.test.js new file mode 100644 index 0000000000..c107118fd4 --- /dev/null +++ b/test/Configurator.test.js @@ -0,0 +1,137 @@ +var assert = require('assert'); +var jsdom_global = require('jsdom-global'); + +var canvasMockify = require('./canvas-mock'); +var Configurator = require('../lib/shared/Configurator').default; +var Network = require('../lib/network/Network'); +var { allOptions, configureOptions } = require('../lib/network/options.js'); + +describe('Configurator', function () { + beforeEach(function() { + this.jsdom_global = canvasMockify("
"); + this.container = document.getElementById('mynetwork'); + }); + + afterEach(function() { + this.jsdom_global(); + this.container.remove(); + this.container = undefined; + }); + + describe('constructor', function () { + + it('sets extends options with default options', function () { + var config = new Configurator(); + assert.deepEqual(config.options, config.defaultOptions); + }); + }); + + describe('setOptions', function () { + + it('with undefined will not modify defaults', function () { + var config = new Configurator(Network, this.container); + config.setOptions(); + assert.deepEqual(config.options, config.defaultOptions); + }); + + it('with undefined will set enabled to false', function () { + var config = new Configurator(Network, this.container); + config.options.enabled = false; + config.setOptions(); + assert.equal(config.options.enabled, false); + }); + + it('with string sets filter and set enabled to true', function () { + var config = new Configurator(Network, this.container); + config.setOptions('stringFilter!'); + assert.equal(config.options.filter, 'stringFilter!'); + assert.equal(config.options.enabled, true); + }); + + it('with array sets filter and set enabled to true', function () { + var config = new Configurator(Network, this.container); + config.setOptions(['array', 'Filter', '!']); + assert.equal(config.options.filter, 'array,Filter,!'); + assert.equal(config.options.enabled, true); + }); + + it('with object sets filter', function () { + var config = new Configurator(Network, this.container); + config.setOptions( + {container: 'newContainer', + filter: 'newFilter', + showButton: 'newShowButton', + enabled: false + }); + assert.equal(config.options.container, 'newContainer'); + assert.equal(config.options.filter, 'newFilter'); + assert.equal(config.options.showButton, 'newShowButton'); + assert.equal(config.options.enabled, false); + }); + + it('with object and filter is false enabled will be false', function () { + var config = new Configurator(Network, this.container); + config.setOptions({filter: false}); + assert.equal(config.options.enabled, false); + }); + + it('with boolean true sets filter', function () { + var config = new Configurator(Network, this.container); + config.setOptions(true); + assert.equal(config.options.enabled, true); + }); + + it('with boolean false sets filter', function () { + var config = new Configurator(Network, this.container); + config.setOptions(false); + assert.equal(config.options.enabled, false); + }); + + it('with function sets filter', function () { + var config = new Configurator(Network, this.container); + config.setOptions(function () {}); + assert.equal(config.options.enabled, true); + }); + + it('with null raises exception', function () { + var config = new Configurator(Network, this.container); + assert.throws(function () {config.setOptions(null)}, TypeError, null); + }); + + }); + + describe('setModuleOptions', function () { + + it('creates no new dom elements if enabled is false', function () { + var config = new Configurator(Network, this.container); + config.setModuleOptions(); + assert.equal(this.container.children.length, 0); + }); + + it('adds div with vis-configuration-wrapper class when enabled', function () { + var config = new Configurator(Network, this.container); + config.options.enabled = true; + config.setModuleOptions(); + assert.equal(this.container.children.length, 1); + assert.equal(this.container.children[0].className, 'vis-configuration-wrapper'); + }); + + it('overwrites config.container with config.options.container', function () { + var config = new Configurator(Network, this.container); + config.options.enabled = true; + config.options.container = document.getElementById('other'); + config.setModuleOptions(); + assert.equal(config.container, config.options.container); + assert.equal(config.container.children[0].className, 'vis-configuration-wrapper'); + }); + }); + + // TODO: This test needs work + describe('getOptions', function () { + + xit('creates no new dom elements if enabled is false', function () { + var config = new Configurator(Network, this.container, configureOptions); + var options = config.getOptions(); + }); + }); +});