toolbar.spec.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { Widget } from '@lumino/widgets';
  4. import { simulate } from 'simulate-event';
  5. import { CSVDelimiter } from '../src';
  6. const DELIMITERS = [',', ';', '\t'];
  7. describe('csvviewer/toolbar', () => {
  8. describe('CSVDelimiter', () => {
  9. describe('#constructor()', () => {
  10. it('should instantiate a `CSVDelimiter` toolbar widget', () => {
  11. const widget = new CSVDelimiter({ selected: ',' });
  12. expect(widget).toBeInstanceOf(CSVDelimiter);
  13. expect(Array.from(widget.node.classList)).toEqual(
  14. expect.arrayContaining(['jp-CSVDelimiter'])
  15. );
  16. widget.dispose();
  17. });
  18. it('should allow pre-selecting the delimiter', () => {
  19. const wanted = DELIMITERS[DELIMITERS.length - 1];
  20. const widget = new CSVDelimiter({ selected: wanted });
  21. expect(widget.selectNode.value).toBe(wanted);
  22. widget.dispose();
  23. });
  24. });
  25. describe('#delimiterChanged', () => {
  26. it('should emit a value when the dropdown value changes', () => {
  27. const widget = new CSVDelimiter({ selected: ',' });
  28. let delimiter = '';
  29. const index = DELIMITERS.length - 1;
  30. const wanted = DELIMITERS[index];
  31. widget.delimiterChanged.connect((s, value) => {
  32. delimiter = value;
  33. });
  34. Widget.attach(widget, document.body);
  35. widget.selectNode.selectedIndex = index;
  36. simulate(widget.selectNode, 'change');
  37. expect(delimiter).toBe(wanted);
  38. widget.dispose();
  39. });
  40. });
  41. describe('#selectNode', () => {
  42. it('should return the delimiter dropdown select tag', () => {
  43. const widget = new CSVDelimiter({ selected: ',' });
  44. expect(widget.selectNode.tagName.toLowerCase()).toBe('select');
  45. widget.dispose();
  46. });
  47. });
  48. describe('#dispose()', () => {
  49. it('should dispose of the resources held by the widget', () => {
  50. const widget = new CSVDelimiter({ selected: ',' });
  51. expect(widget.isDisposed).toBe(false);
  52. widget.dispose();
  53. expect(widget.isDisposed).toBe(true);
  54. });
  55. it('should be safe to call multiple times', () => {
  56. const widget = new CSVDelimiter({ selected: ',' });
  57. expect(widget.isDisposed).toBe(false);
  58. widget.dispose();
  59. widget.dispose();
  60. expect(widget.isDisposed).toBe(true);
  61. });
  62. });
  63. });
  64. });