vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.8 KiB

  1. var assert = require('assert');
  2. var jsdom_global = require('jsdom-global');
  3. var canvasMockify = require('./canvas-mock');
  4. var Configurator = require('../lib/shared/Configurator').default;
  5. var Network = require('../lib/network/Network');
  6. var {allOptions, configureOptions} = require('../lib/network/options.js');
  7. describe('Configurator', function () {
  8. beforeEach(function() {
  9. this.jsdom_global = canvasMockify("<div id='mynetwork'></div><div id='other'></div>");
  10. this.container = document.getElementById('mynetwork');
  11. });
  12. afterEach(function() {
  13. this.jsdom_global();
  14. this.container.remove();
  15. this.container = undefined;
  16. });
  17. describe('constructor', function () {
  18. it('sets extends options with default options', function () {
  19. var config = new Configurator();
  20. assert.deepEqual(config.options, config.defaultOptions);
  21. });
  22. });
  23. describe('setOptions', function () {
  24. it('with undefined will not modify defaults', function () {
  25. var config = new Configurator(Network, this.container);
  26. config.setOptions();
  27. assert.deepEqual(config.options, config.defaultOptions);
  28. });
  29. it('with undefined will set enabled to false', function () {
  30. var config = new Configurator(Network, this.container);
  31. config.options.enabled = false;
  32. config.setOptions();
  33. assert.equal(config.options.enabled, false);
  34. });
  35. it('with string sets filter and set enabled to true', function () {
  36. var config = new Configurator(Network, this.container);
  37. config.setOptions('stringFilter!');
  38. assert.equal(config.options.filter, 'stringFilter!');
  39. assert.equal(config.options.enabled, true);
  40. });
  41. it('with array sets filter and set enabled to true', function () {
  42. var config = new Configurator(Network, this.container);
  43. config.setOptions(['array', 'Filter', '!']);
  44. assert.equal(config.options.filter, 'array,Filter,!');
  45. assert.equal(config.options.enabled, true);
  46. });
  47. it('with object sets filter', function () {
  48. var config = new Configurator(Network, this.container);
  49. config.setOptions(
  50. {container: 'newContainer',
  51. filter: 'newFilter',
  52. showButton: 'newShowButton',
  53. enabled: false
  54. });
  55. assert.equal(config.options.container, 'newContainer');
  56. assert.equal(config.options.filter, 'newFilter');
  57. assert.equal(config.options.showButton, 'newShowButton');
  58. assert.equal(config.options.enabled, false);
  59. });
  60. it('with object and filter is false enabled will be false', function () {
  61. var config = new Configurator(Network, this.container);
  62. config.setOptions({filter: false});
  63. assert.equal(config.options.enabled, false);
  64. });
  65. it('with boolean true sets filter', function () {
  66. var config = new Configurator(Network, this.container);
  67. config.setOptions(true);
  68. assert.equal(config.options.enabled, true);
  69. });
  70. it('with boolean false sets filter', function () {
  71. var config = new Configurator(Network, this.container);
  72. config.setOptions(false);
  73. assert.equal(config.options.enabled, false);
  74. });
  75. it('with function sets filter', function () {
  76. var config = new Configurator(Network, this.container);
  77. config.setOptions(function () {});
  78. assert.equal(config.options.enabled, true);
  79. });
  80. it('with null raises exception', function () {
  81. var config = new Configurator(Network, this.container);
  82. assert.throws(function () {config.setOptions(null)}, TypeError, null);
  83. });
  84. });
  85. describe('setModuleOptions', function () {
  86. it('creates no new dom elements if enabled is false', function () {
  87. var config = new Configurator(Network, this.container);
  88. config.setModuleOptions();
  89. assert.equal(this.container.children.length, 0);
  90. });
  91. it('adds div with vis-configuration-wrapper class when enabled', function () {
  92. var config = new Configurator(Network, this.container);
  93. config.options.enabled = true;
  94. config.setModuleOptions();
  95. assert.equal(this.container.children.length, 1);
  96. assert.equal(this.container.children[0].className, 'vis-configuration-wrapper');
  97. });
  98. it('overwrites config.container with config.options.container', function () {
  99. var config = new Configurator(Network, this.container);
  100. config.options.enabled = true;
  101. config.options.container = document.getElementById('other');
  102. config.setModuleOptions();
  103. assert.equal(config.container, config.options.container);
  104. assert.equal(config.container.children[0].className, 'vis-configuration-wrapper');
  105. });
  106. });
  107. // TODO: This test needs work
  108. describe('getOptions', function () {
  109. xit('creates no new dom elements if enabled is false', function () {
  110. var config = new Configurator(Network, this.container, configureOptions);
  111. var options = config.getOptions();
  112. });
  113. });
  114. });