edit.spec.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import 'jest';
  4. import { CommandRegistry } from '@lumino/commands';
  5. import { Widget } from '@lumino/widgets';
  6. import { WidgetTracker } from '@jupyterlab/apputils';
  7. import { EditMenu, IEditMenu } from '@jupyterlab/mainmenu';
  8. import { delegateExecute } from './util';
  9. class Wodget extends Widget {
  10. state: string;
  11. }
  12. describe('@jupyterlab/mainmenu', () => {
  13. describe('EditMenu', () => {
  14. let commands: CommandRegistry;
  15. let menu: EditMenu;
  16. let tracker: WidgetTracker<Wodget>;
  17. let wodget: Wodget;
  18. beforeAll(() => {
  19. commands = new CommandRegistry();
  20. });
  21. beforeEach(() => {
  22. wodget = new Wodget();
  23. menu = new EditMenu({ commands });
  24. tracker = new WidgetTracker<Wodget>({ namespace: 'wodget' });
  25. void tracker.add(wodget);
  26. });
  27. afterEach(() => {
  28. menu.dispose();
  29. tracker.dispose();
  30. wodget.dispose();
  31. });
  32. describe('#constructor()', () => {
  33. it('should construct a new edit menu', () => {
  34. expect(menu).toBeInstanceOf(EditMenu);
  35. expect(menu.menu.title.label).toBe('Edit');
  36. });
  37. });
  38. describe('#undoers', () => {
  39. it('should allow setting of an IUndoer', () => {
  40. const undoer: IEditMenu.IUndoer<Wodget> = {
  41. tracker,
  42. undo: widget => {
  43. widget.state = 'undo';
  44. return;
  45. },
  46. redo: widget => {
  47. widget.state = 'redo';
  48. return;
  49. }
  50. };
  51. menu.undoers.add(undoer);
  52. void delegateExecute(wodget, menu.undoers, 'undo');
  53. expect(wodget.state).toBe('undo');
  54. void delegateExecute(wodget, menu.undoers, 'redo');
  55. expect(wodget.state).toBe('redo');
  56. });
  57. });
  58. describe('#clearers', () => {
  59. it('should allow setting of an IClearer', () => {
  60. const clearer: IEditMenu.IClearer<Wodget> = {
  61. tracker,
  62. noun: 'Nouns',
  63. clearCurrent: widget => {
  64. widget.state = 'clearCurrent';
  65. return;
  66. },
  67. clearAll: widget => {
  68. widget.state = 'clearAll';
  69. return;
  70. }
  71. };
  72. menu.clearers.add(clearer);
  73. void delegateExecute(wodget, menu.clearers, 'clearCurrent');
  74. expect(wodget.state).toBe('clearCurrent');
  75. void delegateExecute(wodget, menu.clearers, 'clearAll');
  76. expect(wodget.state).toBe('clearAll');
  77. });
  78. });
  79. });
  80. });