standard-log 6.3.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,88 +1,99 @@
1
- import a from 'assertron';
2
- import { addLogReporter, clearLogReporters, config, createMemoryLogReporter, getLogReporter, ProhibitedDuringProduction } from '.';
3
- import { store } from './store';
4
- import { createConsoleLogReporter } from './console';
5
- import { LogFilter } from './types';
6
- import { logLevels } from './logLevel';
7
- import { getConsoleReporter, hasConsoleReporter } from './logReporter';
1
+ import a from 'assertron'
2
+ import {
3
+ addLogReporter, clearLogReporters, config,
4
+ createConsoleLogReporter, createMemoryLogReporter,
5
+ getConsoleReporter, getLogReporter, hasConsoleReporter,
6
+ LogFilter, logLevels, ProhibitedDuringProduction
7
+ } from '.'
8
+ import { store } from './store'
8
9
 
9
- beforeEach(() => {
10
- store.reset()
11
- config({ mode: 'test' })
12
- })
10
+ describe('production checks', () => {
11
+ beforeEach(() => store.reset())
13
12
 
14
- describe('addLogReporter()', () => {
15
- test('throws in production mode', () => {
16
- config({ mode: 'production' })
17
- const reporter = createMemoryLogReporter()
18
- a.throws(() => addLogReporter(reporter), ProhibitedDuringProduction)
13
+ describe('addLogReporter()', () => {
14
+ test('throws in production mode', () => {
15
+ config({ mode: 'production' })
16
+ const reporter = createMemoryLogReporter()
17
+ a.throws(() => addLogReporter(reporter), ProhibitedDuringProduction)
18
+ })
19
19
  })
20
20
 
21
- test('adds log reporter', () => {
22
- const count = store.value.reporters.length
23
- const reporter = createMemoryLogReporter()
24
- addLogReporter(reporter)
21
+ describe('clearLogReporters()', () => {
22
+ test('throws in production mode', () => {
23
+ config({ mode: 'production' })
24
+ a.throws(() => clearLogReporters(), ProhibitedDuringProduction)
25
+ })
26
+ })
27
+ })
25
28
 
26
- expect(store.value.reporters.length).toBe(count + 1)
29
+ describe('unit tests', () => {
30
+ beforeEach(() => {
31
+ store.reset()
32
+ config({ mode: 'test' })
27
33
  })
28
34
 
29
- describe('add another console reporter', () => {
30
- test('will not replace existing one', () => {
31
- expect(getLogReporter('console')).toBeDefined()
32
- addLogReporter(createConsoleLogReporter({ id: 'c2' }))
33
- expect(getLogReporter('c2')).toBeUndefined()
34
- expect(getLogReporter('console')).toBeDefined()
35
- })
35
+ describe('addLogReporter()', () => {
36
+ test('adds log reporter', () => {
37
+ const count = store.value.reporters.length
38
+ const reporter = createMemoryLogReporter()
39
+ addLogReporter(reporter)
36
40
 
37
- test('will carry over existing filter', () => {
38
- const filter: LogFilter = entry => entry.level < logLevels.alert
39
- addLogReporter(createConsoleLogReporter({ id: 'c2', filter }))
40
- addLogReporter(createConsoleLogReporter({ id: 'c3' }))
41
- const c3 = getConsoleReporter()!
42
- expect(c3.filter).toBe(filter)
41
+ expect(store.value.reporters.length).toBe(count + 1)
43
42
  })
44
43
 
45
- test('will combine existing filter and new filter', () => {
46
- addLogReporter(createConsoleLogReporter({ id: 'c2', filter: entry => entry.level > logLevels.critical }))
47
- addLogReporter(createConsoleLogReporter({ id: 'c3', filter: entry => entry.level < logLevels.error }))
48
- const c2 = getConsoleReporter()!
49
- expect(c2.filter!({ level: logLevels.info } as any)).toBe(false)
50
- expect(c2.filter!({ level: logLevels.alert } as any)).toBe(false)
51
- })
52
- })
53
- })
44
+ describe('add another console reporter', () => {
45
+ test('will not replace existing one', () => {
46
+ expect(getLogReporter('console')).toBeDefined()
47
+ addLogReporter(createConsoleLogReporter({ id: 'c2' }))
48
+ expect(getLogReporter('c2')).toBeUndefined()
49
+ expect(getLogReporter('console')).toBeDefined()
50
+ })
54
51
 
55
- describe('getLogReporter()', () => {
56
- test('get log reporter by id', () => {
57
- expect(getLogReporter('console')).toBeDefined()
58
- })
52
+ test('will carry over existing filter', () => {
53
+ const filter: LogFilter = entry => entry.level < logLevels.alert
54
+ addLogReporter(createConsoleLogReporter({ id: 'c2', filter }))
55
+ addLogReporter(createConsoleLogReporter({ id: 'c3' }))
56
+ const c3 = getConsoleReporter()!
57
+ expect(c3.filter).toBe(filter)
58
+ })
59
59
 
60
- test('get log reporter with unknown id gets undefined', () => {
61
- expect(getLogReporter('blah')).toBeUndefined()
60
+ test('will combine existing filter and new filter', () => {
61
+ addLogReporter(createConsoleLogReporter({ id: 'c2', filter: entry => entry.level > logLevels.critical }))
62
+ addLogReporter(createConsoleLogReporter({ id: 'c3', filter: entry => entry.level < logLevels.error }))
63
+ const c2 = getConsoleReporter()!
64
+ expect(c2.filter!({ level: logLevels.info } as any)).toBe(false)
65
+ expect(c2.filter!({ level: logLevels.alert } as any)).toBe(false)
66
+ })
67
+ })
62
68
  })
63
- })
64
69
 
65
- describe('clearLogReporters()', () => {
66
- test('throws in production mode', () => {
67
- config({ mode: 'production' })
68
- a.throws(() => clearLogReporters(), ProhibitedDuringProduction)
70
+ describe('getLogReporter()', () => {
71
+ test('get log reporter by id', () => {
72
+ expect(getLogReporter('console')).toBeDefined()
73
+ })
74
+
75
+ test('get log reporter with unknown id gets undefined', () => {
76
+ expect(getLogReporter('blah')).toBeUndefined()
77
+ })
69
78
  })
70
79
 
71
- test('removes all reporters', () => {
72
- clearLogReporters()
80
+ describe('clearLogReporters()', () => {
81
+ test('removes all reporters', () => {
82
+ clearLogReporters()
73
83
 
74
- expect(store.value.reporters.length).toBe(0)
84
+ expect(store.value.reporters.length).toBe(0)
85
+ })
75
86
  })
76
- })
77
87
 
78
- describe('hasConsoleReporter()', () => {
79
- test('returns true if there is a console reporter', () => {
80
- expect(hasConsoleReporter()).toBeTruthy()
81
- })
82
- test('returns false if there is no console reporter', () => {
83
- clearLogReporters()
84
- expect(hasConsoleReporter()).toBeFalsy()
85
- addLogReporter(createMemoryLogReporter())
86
- expect(hasConsoleReporter()).toBeFalsy()
88
+ describe('hasConsoleReporter()', () => {
89
+ test('returns true if there is a console reporter', () => {
90
+ expect(hasConsoleReporter()).toBeTruthy()
91
+ })
92
+ test('returns false if there is no console reporter', () => {
93
+ clearLogReporters()
94
+ expect(hasConsoleReporter()).toBeFalsy()
95
+ addLogReporter(createMemoryLogReporter())
96
+ expect(hasConsoleReporter()).toBeFalsy()
97
+ })
87
98
  })
88
99
  })
@@ -2,97 +2,102 @@ import a from 'assertron'
2
2
  import { config, createMemoryLogReporter, logLevels, ProhibitedDuringProduction } from '..'
3
3
  import { store } from '../store'
4
4
 
5
- beforeEach(() => {
6
- store.reset()
7
- config({ mode: 'test' })
8
- })
9
- test('log entries are saved in the `logs` property', () => {
10
- const reporter = createMemoryLogReporter()
11
- const entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() }
12
- reporter.write(entry)
13
- expect(reporter.logs).toEqual([entry])
14
- })
15
-
16
- test('can override id', () => {
17
- const reporter = createMemoryLogReporter({ id: 'custom-id-mem' })
18
- expect(reporter.id).toBe('custom-id-mem')
19
- })
20
-
21
- test('can filter', () => {
22
- const reporter = createMemoryLogReporter({ filter(entry) { return entry.id !== 'secret' } })
23
- reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() })
24
- reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() })
25
- expect(reporter.logs.length).toBe(1)
26
- })
5
+ describe('production checks', () => {
6
+ beforeEach(() => store.reset())
7
+ test('set formatter in production mode throws', () => {
8
+ config({ mode: 'production' })
9
+ const reporter = createMemoryLogReporter()
27
10
 
28
- test('can change filter', () => {
29
- const reporter = createMemoryLogReporter()
30
- const filter = reporter.filter
31
- reporter.filter = entry => entry.id !== 'secret'
32
- expect(reporter.filter).not.toEqual(filter)
33
- })
11
+ a.throws(() => { reporter.formatter = e => e }, ProhibitedDuringProduction)
12
+ })
34
13
 
35
- test('set filter in production mode throws', () => {
36
- config({ mode: 'production' })
37
- const reporter = createMemoryLogReporter()
38
- a.throws(() => { reporter.filter = () => true }, ProhibitedDuringProduction)
14
+ test('set filter in production mode throws', () => {
15
+ config({ mode: 'production' })
16
+ const reporter = createMemoryLogReporter()
17
+ a.throws(() => { reporter.filter = () => true }, ProhibitedDuringProduction)
18
+ })
39
19
  })
40
20
 
41
- test('formatter can be used to pre-process the log', () => {
42
- const reporter = createMemoryLogReporter({
43
- formatter: (entry) => ({
44
- ...entry,
45
- args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)
46
- })
21
+ describe('unit tests', () => {
22
+ beforeEach(() => {
23
+ store.reset()
24
+ config({ mode: 'test' })
25
+ })
26
+ test('log entries are saved in the `logs` property', () => {
27
+ const reporter = createMemoryLogReporter()
28
+ const entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() }
29
+ reporter.write(entry)
30
+ expect(reporter.logs).toEqual([entry])
47
31
  })
48
32
 
49
- const entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() }
50
- reporter.write(entry)
51
-
52
- expect(reporter.logs[0].args[1]).toBe('<censored>')
53
- })
33
+ test('can override id', () => {
34
+ const reporter = createMemoryLogReporter({ id: 'custom-id-mem' })
35
+ expect(reporter.id).toBe('custom-id-mem')
36
+ })
54
37
 
55
- test('can change formatter', () => {
56
- const reporter = createMemoryLogReporter()
57
- const formatter = reporter.formatter
58
- reporter.formatter = e => ({ ...e, args: e.args.reverse() })
59
- expect(reporter.formatter).not.toEqual(formatter)
60
- })
38
+ test('can filter', () => {
39
+ const reporter = createMemoryLogReporter({ filter(entry) { return entry.id !== 'secret' } })
40
+ reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() })
41
+ reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() })
42
+ expect(reporter.logs.length).toBe(1)
43
+ })
61
44
 
62
- test('set formatter in production mode throws', () => {
63
- config({ mode: 'production' })
64
- const reporter = createMemoryLogReporter()
45
+ test('can change filter', () => {
46
+ const reporter = createMemoryLogReporter()
47
+ const filter = reporter.filter
48
+ reporter.filter = entry => entry.id !== 'secret'
49
+ expect(reporter.filter).not.toEqual(filter)
50
+ })
65
51
 
66
- a.throws(() => { reporter.formatter = e => e }, ProhibitedDuringProduction)
67
- })
52
+ test('formatter can be used to pre-process the log', () => {
53
+ const reporter = createMemoryLogReporter({
54
+ formatter: (entry) => ({
55
+ ...entry,
56
+ args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)
57
+ })
58
+ })
68
59
 
69
- describe('getLogMessages()', () => {
70
- test('empty logs returns empty string', () => {
71
- const reporter = createMemoryLogReporter()
60
+ const entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() }
61
+ reporter.write(entry)
72
62
 
73
- expect(reporter.getLogMessage()).toEqual('')
63
+ expect(reporter.logs[0].args[1]).toBe('<censored>')
74
64
  })
75
65
 
76
- test('print args', () => {
66
+ test('can change formatter', () => {
77
67
  const reporter = createMemoryLogReporter()
78
- const entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }
79
- reporter.write(entry)
80
- expect(reporter.getLogMessage()).toEqual('miku is singing')
68
+ const formatter = reporter.formatter
69
+ reporter.formatter = e => ({ ...e, args: e.args.reverse() })
70
+ expect(reporter.formatter).not.toEqual(formatter)
81
71
  })
82
72
 
83
- test('print object arg', () => {
84
- const reporter = createMemoryLogReporter()
85
- const entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() }
86
- reporter.write(entry)
87
- expect(reporter.getLogMessage()).toEqual("{ miku: 'sing' }")
73
+ describe('getLogMessages()', () => {
74
+ test('empty logs returns empty string', () => {
75
+ const reporter = createMemoryLogReporter()
76
+
77
+ expect(reporter.getLogMessage()).toEqual('')
78
+ })
79
+
80
+ test('print args', () => {
81
+ const reporter = createMemoryLogReporter()
82
+ const entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }
83
+ reporter.write(entry)
84
+ expect(reporter.getLogMessage()).toEqual('miku is singing')
85
+ })
86
+
87
+ test('print object arg', () => {
88
+ const reporter = createMemoryLogReporter()
89
+ const entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() }
90
+ reporter.write(entry)
91
+ expect(reporter.getLogMessage()).toEqual("{ miku: 'sing' }")
92
+ })
88
93
  })
89
- })
90
94
 
91
- describe('getLogMessageWithLevel', () => {
92
- test('print with level', () => {
93
- const reporter = createMemoryLogReporter()
94
- reporter.write({ id: 'log', level: logLevels.info, args: ['msg 1'], timestamp: new Date() })
95
- reporter.write({ id: 'log', level: logLevels.warn, args: ['msg 2'], timestamp: new Date() })
96
- expect(reporter.getLogMessageWithLevel()).toEqual(`(INFO) msg 1\n(WARN) msg 2`)
95
+ describe('getLogMessageWithLevel', () => {
96
+ test('print with level', () => {
97
+ const reporter = createMemoryLogReporter()
98
+ reporter.write({ id: 'log', level: logLevels.info, args: ['msg 1'], timestamp: new Date() })
99
+ reporter.write({ id: 'log', level: logLevels.warn, args: ['msg 2'], timestamp: new Date() })
100
+ expect(reporter.getLogMessageWithLevel()).toEqual(`(INFO) msg 1\n(WARN) msg 2`)
101
+ })
97
102
  })
98
103
  })