-
Notifications
You must be signed in to change notification settings - Fork 463
Expand file tree
/
Copy pathindex.spec.ts
More file actions
67 lines (57 loc) · 1.71 KB
/
Copy pathindex.spec.ts
File metadata and controls
67 lines (57 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { Context, Message } from 'cordis'
import { ConsoleExporter } from '@cordisjs/plugin-logger-console'
import { expect, describe, it, beforeAll, afterAll, beforeEach, vi } from 'vitest'
describe('logger-console', () => {
let ctx: Context
let exporter: ConsoleExporter
let data: string
beforeAll(() => {
vi.useFakeTimers({ now: Date.now() })
ctx = new Context()
exporter = new ConsoleExporter(ctx, { colors: 0, showDiff: true, showTime: '' })
exporter.export = (msg: Message) => {
data += exporter.render(msg) + '\n'
}
})
afterAll(() => {
vi.useRealTimers()
})
beforeEach(() => {
data = ''
})
it('format error', () => {
const inner = new Error('message')
delete inner.stack
const outer = new Error('outer')
;(outer as any).errors = [inner]
ctx.logger('test').error(outer)
expect(data).toBe('[E] test message +0ms\n')
})
it('format object', () => {
vi.advanceTimersByTime(2)
ctx.logger('test').info({ foo: 'bar' })
expect(data).toBe("[I] test { foo: 'bar' } +2ms\n")
})
it('custom formatter', () => {
vi.advanceTimersByTime(1)
exporter.formatters.x = () => 'custom'
ctx.logger('test').info('%x%%x')
expect(data).toBe('[I] test custom%x +1ms\n')
})
it('log levels', () => {
const logger = ctx.logger('test')
logger.debug('%C', 'foo bar')
expect(data).toBe('')
logger.level = 3
logger.debug('%C', 'foo bar')
expect(data).toBeTruthy()
})
it('label style', () => {
exporter.label = { align: 'right', width: 10, margin: 2 }
ctx.logger('test').info('message\nmessage')
expect(data).toBe([
' test [I] message\n',
' message +0ms\n',
].join(''))
})
})