| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { test } from 'node:test'
- import assert from 'node:assert/strict'
- import path from 'node:path'
- import { fileURLToPath } from 'node:url'
- import { SecretReader } from '../../../src/storage/adapters/SecretReader.js'
- import { fixtureCtx } from '../../commands/_helper.js'
- const __dirname = path.dirname(fileURLToPath(import.meta.url))
- const fixtureRoot = path.join(__dirname, '../../fixtures/sample-book')
- test('SecretReader.readBasicInfo 读信息差 front matter', async () => {
- const r = await new SecretReader(fixtureRoot).readBasicInfo('信息差-001')
- assert.equal(r.ok, true)
- assert.equal(r.data.读者已知, false)
- })
- test('SecretReader.readContent 读 ## 内容 段', async () => {
- const r = await new SecretReader(fixtureRoot).readContent('信息差-001')
- assert.equal(r.ok, true)
- assert.ok(r.content.includes('封印邪灵'))
- })
- test('SecretReader 不存在的信息差 → ok=false', async () => {
- const r = await new SecretReader(fixtureRoot).readBasicInfo('信息差-999')
- assert.equal(r.ok, false)
- })
- test('SecretReader.listUnrevealed 无 cache 时返回空数组(不崩)', async () => {
- const rows = await new SecretReader(fixtureRoot).listUnrevealed()
- assert.deepEqual(rows, [])
- })
- test('SecretReader.listUnrevealed 缓存直出 短题/知情人/关键词/登记章', async () => {
- const { ctx, cleanup } = await fixtureCtx()
- try {
- const rows = await new SecretReader(ctx.repoPath, ctx.cache).listUnrevealed()
- const one = rows.find((s) => s.id === '信息差-001')
- assert.ok(one, JSON.stringify(rows))
- assert.equal(one.短题, '灭门真凶') // 文件名第三段起
- assert.deepEqual(one.知情人, ['林晚'])
- assert.deepEqual(one.关键词, ['玉佩', '宗门'])
- assert.equal(one.登记章, 1)
- } finally {
- await cleanup()
- }
- })
- test('SecretReader.readContentFirstLine 取「## 内容」段首行', async () => {
- const r = await new SecretReader(fixtureRoot).readContentFirstLine('信息差-001')
- assert.equal(r.ok, true)
- assert.equal(r.line, '玉佩乃前代掌门封印邪灵之物,外人不可知。')
- })
- test('SecretReader.readContentFirstLine 不存在 → ok=false', async () => {
- const r = await new SecretReader(fixtureRoot).readContentFirstLine('信息差-999')
- assert.equal(r.ok, false)
- })
|