view.spec.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // Copyright (c) Jupyter Development Team.
  2. import 'jest';
  3. import { CommandRegistry } from '@lumino/commands';
  4. import { Widget } from '@lumino/widgets';
  5. import { WidgetTracker } from '@jupyterlab/apputils';
  6. import { ViewMenu, IViewMenu } from '@jupyterlab/mainmenu';
  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. expect(menu.menu.title.label).toBe('View');
  37. });
  38. });
  39. describe('#editorViewers', () => {
  40. it('should allow setting of an IEditorViewer', () => {
  41. const viewer: IViewMenu.IEditorViewer<Wodget> = {
  42. tracker,
  43. toggleLineNumbers: widget => {
  44. widget.numbered = !widget.numbered;
  45. return;
  46. },
  47. toggleMatchBrackets: widget => {
  48. widget.matched = !widget.matched;
  49. return;
  50. },
  51. toggleWordWrap: widget => {
  52. widget.wrapped = !widget.wrapped;
  53. return;
  54. },
  55. matchBracketsToggled: widget => widget.matched,
  56. lineNumbersToggled: widget => widget.numbered,
  57. wordWrapToggled: widget => widget.wrapped
  58. };
  59. menu.editorViewers.add(viewer);
  60. expect(
  61. delegateToggled(wodget, menu.editorViewers, 'matchBracketsToggled')
  62. ).toBe(false);
  63. expect(
  64. delegateToggled(wodget, menu.editorViewers, 'wordWrapToggled')
  65. ).toBe(false);
  66. expect(
  67. delegateToggled(wodget, menu.editorViewers, 'lineNumbersToggled')
  68. ).toBe(false);
  69. void delegateExecute(wodget, menu.editorViewers, 'toggleLineNumbers');
  70. void delegateExecute(wodget, menu.editorViewers, 'toggleMatchBrackets');
  71. void delegateExecute(wodget, menu.editorViewers, 'toggleWordWrap');
  72. expect(
  73. delegateToggled(wodget, menu.editorViewers, 'matchBracketsToggled')
  74. ).toBe(true);
  75. expect(
  76. delegateToggled(wodget, menu.editorViewers, 'wordWrapToggled')
  77. ).toBe(true);
  78. expect(
  79. delegateToggled(wodget, menu.editorViewers, 'lineNumbersToggled')
  80. ).toBe(true);
  81. });
  82. });
  83. });
  84. });