run.spec.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 { RunMenu, IRunMenu } from '@jupyterlab/mainmenu';
  7. class Wodget extends Widget {
  8. state: string;
  9. }
  10. import { delegateExecute } from './util';
  11. describe('@jupyterlab/mainmenu', () => {
  12. describe('RunMenu', () => {
  13. let commands: CommandRegistry;
  14. let menu: RunMenu;
  15. let tracker: WidgetTracker<Wodget>;
  16. let wodget: Wodget;
  17. beforeAll(() => {
  18. commands = new CommandRegistry();
  19. });
  20. beforeEach(() => {
  21. wodget = new Wodget();
  22. menu = new RunMenu({ commands });
  23. tracker = new WidgetTracker<Wodget>({ namespace: 'wodget' });
  24. void tracker.add(wodget);
  25. });
  26. afterEach(() => {
  27. menu.dispose();
  28. tracker.dispose();
  29. wodget.dispose();
  30. });
  31. describe('#constructor()', () => {
  32. it('should construct a new run menu', () => {
  33. expect(menu).toBeInstanceOf(RunMenu);
  34. expect(menu.menu.title.label).toBe('Run');
  35. });
  36. });
  37. describe('#codeRunners', () => {
  38. it('should allow setting of an ICodeRunner', () => {
  39. const runner: IRunMenu.ICodeRunner<Wodget> = {
  40. tracker,
  41. noun: 'Noun',
  42. run: widget => {
  43. widget.state = 'run';
  44. return Promise.resolve(void 0);
  45. },
  46. runAll: widget => {
  47. widget.state = 'runAll';
  48. return Promise.resolve(void 0);
  49. },
  50. restartAndRunAll: widget => {
  51. widget.state = 'restartAndRunAll';
  52. return Promise.resolve(false);
  53. }
  54. };
  55. menu.codeRunners.add(runner);
  56. void delegateExecute(wodget, menu.codeRunners, 'run');
  57. expect(wodget.state).toBe('run');
  58. void delegateExecute(wodget, menu.codeRunners, 'runAll');
  59. expect(wodget.state).toBe('runAll');
  60. void delegateExecute(wodget, menu.codeRunners, 'restartAndRunAll');
  61. expect(wodget.state).toBe('restartAndRunAll');
  62. });
  63. });
  64. });
  65. });