registry.spec.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { LoggerRegistry } from '@jupyterlab/logconsole';
  4. import {
  5. IRenderMimeRegistry,
  6. RenderMimeRegistry
  7. } from '@jupyterlab/rendermime';
  8. import { ISignal, Signal } from '@lumino/signaling';
  9. class SignalLogger<SENDER, ARGS> {
  10. constructor(signal: ISignal<SENDER, ARGS>) {
  11. signal.connect(this.slot, this);
  12. }
  13. slot(sender: SENDER, args: ARGS) {
  14. this.args.push(args);
  15. }
  16. dispose() {
  17. Signal.disconnectAll(this);
  18. }
  19. args: ARGS[] = [];
  20. }
  21. describe('LoggerRegistry', () => {
  22. let defaultRendermime: IRenderMimeRegistry;
  23. let registry: LoggerRegistry;
  24. beforeEach(() => {
  25. defaultRendermime = new RenderMimeRegistry();
  26. registry = new LoggerRegistry({
  27. defaultRendermime,
  28. maxLength: 10
  29. });
  30. });
  31. afterEach(() => {
  32. registry.dispose();
  33. });
  34. describe('#constructor()', () => {
  35. it('should create a registry with initial parameters', () => {
  36. expect(registry).toBeInstanceOf(LoggerRegistry);
  37. expect(registry.maxLength).toBe(10);
  38. });
  39. });
  40. describe('#getLogger()', () => {
  41. it('gets a specific logger', () => {
  42. const A = registry.getLogger('A');
  43. const B = registry.getLogger('B');
  44. expect(registry.getLogger('A')).toEqual(A);
  45. expect(registry.getLogger('B')).toEqual(B);
  46. });
  47. it('creates a new logger on demand if needed with default parameters', () => {
  48. const A = registry.getLogger('A');
  49. expect(A.rendermime).toBe(defaultRendermime);
  50. expect(A.maxLength).toBe(registry.maxLength);
  51. });
  52. it('emits a registry changed "append" signal', () => {
  53. const s = new SignalLogger(registry.registryChanged);
  54. registry.getLogger('A');
  55. expect(s.args).toEqual(['append']);
  56. s.dispose();
  57. });
  58. });
  59. describe('#getLoggers', () => {
  60. it('gets all current loggers', () => {
  61. const A = registry.getLogger('A');
  62. expect(registry.getLoggers()).toEqual([A]);
  63. });
  64. });
  65. describe('#maxLength', () => {
  66. it('overrides the max length for all loggers', () => {
  67. const A = registry.getLogger('A');
  68. const B = registry.getLogger('B');
  69. A.maxLength = 5;
  70. B.maxLength = 20;
  71. expect(A.maxLength).toEqual(5);
  72. expect(B.maxLength).toEqual(20);
  73. registry.maxLength = 12;
  74. expect(A.maxLength).toEqual(12);
  75. expect(B.maxLength).toEqual(12);
  76. });
  77. });
  78. });