Passed
Push — main ( 0eb5dd...b29f4f )
by Lorenzo
01:10 queued 13s
created

ClassBean.getLogger   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
1
import { flushPromises } from '@test/utils/testUtils';
2
import { InjectLogger } from '@/decorators/InjectLogger';
3
import { Bean, Logger as PinoLogger } from '@/main';
4
import Logger from '@/Logger';
5
6
jest.mock('@/decorators', () => ({
7
  registeredBeans: new Map(),
8
  registeredMethods: new Map(),
9
  logger: {
10
    info: jest.fn(),
11
    debug: jest.fn(),
12
    error: jest.fn(),
13
  },
14
}));
15
jest.mock('@/Logger');
16
17
describe('InjectLogger.ts', () => {
18
  beforeEach(() => {
19
    jest.resetAllMocks();
20
    (Logger as jest.Mock).mockImplementation(jest.requireActual('@/Logger').default);
21
  });
22
23
  it('injects a logger', async () => {
24
    // GIVEN
25
    class Class {
26
      @InjectLogger()
27
      private logger!: PinoLogger;
28
29
      getLogger() {
30
        return this.logger;
31
      }
32
    }
33
34
    // WHEN
35
    const instance = new Class();
36
    await flushPromises();
37
38
    // THEN
39
    expect(instance.getLogger()).toBeDefined();
40
  });
41
42
  it('injects a logger with a scope', async () => {
43
    // GIVEN
44
    @Bean
45
    class ClassBean {
46
      @InjectLogger('ClassBean')
47
      private logger!: PinoLogger;
48
49
      getLogger() {
50
        return this.logger;
51
      }
52
    }
53
54
    // WHEN
55
    const instance = new ClassBean();
56
    await flushPromises();
57
    await flushPromises();
58
    await flushPromises();
59
60
    // THEN
61
    instance.getLogger().debug('ciao');
62
    expect(instance.getLogger()).toBeDefined();
63
    expect(Logger).toBeCalledWith('ClassBean');
64
  });
65
});
66