registry.spec.ts 2.5 KB

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