view.spec.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { WidgetTracker } from '@jupyterlab/apputils';
  4. import { IViewMenu, ViewMenu } from '@jupyterlab/mainmenu';
  5. import { CommandRegistry } from '@lumino/commands';
  6. import { Widget } from '@lumino/widgets';
  7. import { delegateExecute, delegateToggled } from './util';
  8. class Wodget extends Widget {
  9. wrapped: boolean = false;
  10. matched: boolean = false;
  11. numbered: boolean = false;
  12. }
  13. describe('@jupyterlab/mainmenu', () => {
  14. describe('ViewMenu', () => {
  15. let commands: CommandRegistry;
  16. let menu: ViewMenu;
  17. let tracker: WidgetTracker<Wodget>;
  18. let wodget: Wodget;
  19. beforeAll(() => {
  20. commands = new CommandRegistry();
  21. });
  22. beforeEach(() => {
  23. wodget = new Wodget();
  24. menu = new ViewMenu({ commands });
  25. tracker = new WidgetTracker<Wodget>({ namespace: 'wodget' });
  26. void tracker.add(wodget);
  27. });
  28. afterEach(() => {
  29. menu.dispose();
  30. tracker.dispose();
  31. wodget.dispose();
  32. });
  33. describe('#constructor()', () => {
  34. it('should construct a new view menu', () => {
  35. expect(menu).toBeInstanceOf(ViewMenu);
  36. // For localization this is now defined when on the mainmenu-extension.
  37. expect(menu.title.label).toBe('');
  38. });
  39. });
  40. describe('#editorViewers', () => {
  41. it('should allow setting of an IEditorViewer', () => {
  42. const viewer: IViewMenu.IEditorViewer<Wodget> = {
  43. tracker,
  44. toggleLineNumbers: widget => {
  45. widget.numbered = !widget.numbered;
  46. return;
  47. },
  48. toggleMatchBrackets: widget => {
  49. widget.matched = !widget.matched;
  50. return;
  51. },
  52. toggleWordWrap: widget => {
  53. widget.wrapped = !widget.wrapped;
  54. return;
  55. },
  56. matchBracketsToggled: widget => widget.matched,
  57. lineNumbersToggled: widget => widget.numbered,
  58. wordWrapToggled: widget => widget.wrapped
  59. };
  60. menu.editorViewers.add(viewer);
  61. expect(
  62. delegateToggled(wodget, menu.editorViewers, 'matchBracketsToggled')
  63. ).toBe(false);
  64. expect(
  65. delegateToggled(wodget, menu.editorViewers, 'wordWrapToggled')
  66. ).toBe(false);
  67. expect(
  68. delegateToggled(wodget, menu.editorViewers, 'lineNumbersToggled')
  69. ).toBe(false);
  70. void delegateExecute(wodget, menu.editorViewers, 'toggleLineNumbers');
  71. void delegateExecute(wodget, menu.editorViewers, 'toggleMatchBrackets');
  72. void delegateExecute(wodget, menu.editorViewers, 'toggleWordWrap');
  73. expect(
  74. delegateToggled(wodget, menu.editorViewers, 'matchBracketsToggled')
  75. ).toBe(true);
  76. expect(
  77. delegateToggled(wodget, menu.editorViewers, 'wordWrapToggled')
  78. ).toBe(true);
  79. expect(
  80. delegateToggled(wodget, menu.editorViewers, 'lineNumbersToggled')
  81. ).toBe(true);
  82. });
  83. });
  84. });
  85. });