51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
|
|
import { assertEquals } from '@std/assert'
|
||
|
|
import { createLogger } from '../src/core/log.ts'
|
||
|
|
|
||
|
|
Deno.test('logger: sammelt post-einträge und schreibt summary', () => {
|
||
|
|
const sink: string[] = []
|
||
|
|
const logger = createLogger({
|
||
|
|
mode: 'force-all',
|
||
|
|
runId: 'run-1',
|
||
|
|
print: (line) => sink.push(line),
|
||
|
|
now: () => new Date('2026-04-16T10:00:00Z'),
|
||
|
|
})
|
||
|
|
logger.postSuccess({
|
||
|
|
slug: 's1',
|
||
|
|
action: 'new',
|
||
|
|
eventId: 'ev1',
|
||
|
|
relaysOk: ['wss://r1'],
|
||
|
|
relaysFailed: [],
|
||
|
|
blossomServersOk: [],
|
||
|
|
imagesUploaded: 0,
|
||
|
|
durationMs: 10,
|
||
|
|
})
|
||
|
|
logger.postSkippedDraft('s2')
|
||
|
|
const summary = logger.finalize(0)
|
||
|
|
assertEquals(summary.run_id, 'run-1')
|
||
|
|
assertEquals(summary.mode, 'force-all')
|
||
|
|
assertEquals(summary.posts.length, 2)
|
||
|
|
assertEquals(summary.posts[0].status, 'success')
|
||
|
|
assertEquals(summary.posts[1].status, 'skipped-draft')
|
||
|
|
assertEquals(summary.exit_code, 0)
|
||
|
|
assertEquals(sink.some((s) => s.includes('s1')), true)
|
||
|
|
})
|
||
|
|
|
||
|
|
Deno.test('logger: writeJson schreibt datei', async () => {
|
||
|
|
const tmp = await Deno.makeTempDir()
|
||
|
|
try {
|
||
|
|
const logger = createLogger({
|
||
|
|
mode: 'diff',
|
||
|
|
runId: 'run-2',
|
||
|
|
print: () => {},
|
||
|
|
now: () => new Date('2026-04-16T10:00:00Z'),
|
||
|
|
})
|
||
|
|
const summary = logger.finalize(0)
|
||
|
|
await logger.writeJson(`${tmp}/out.json`, summary)
|
||
|
|
const text = await Deno.readTextFile(`${tmp}/out.json`)
|
||
|
|
const parsed = JSON.parse(text)
|
||
|
|
assertEquals(parsed.run_id, 'run-2')
|
||
|
|
} finally {
|
||
|
|
await Deno.remove(tmp, { recursive: true })
|
||
|
|
}
|
||
|
|
})
|