| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { test } from 'node:test'
- import assert from 'node:assert/strict'
- import { parseBookConfig } from '../../../src/storage/parsers/book-config.js'
- test('正常解析 book.yaml', () => {
- const yaml = `spec_version: "7.0"
- 书名: 测试书
- 类型: 玄幻
- 每章目标字数: 3000
- 卷规模: 40
- 文体基线起: 1
- 文体基线止: 30
- 伏笔悬了太久章数: 10
- 悬念悬了太久章数: 10
- 感情线悬了太久章数: 30
- 连续弱钩上限: 3
- 关键章稿数: 3
- 自动确认细纲: false
- 连写批次大小: 8`
- const result = parseBookConfig(yaml)
- assert.equal(result.ok, true)
- assert.equal(result.data.书名, '测试书')
- assert.equal(result.data.每章目标字数, 3000)
- assert.equal(result.data.伏笔悬了太久章数, 10)
- })
- test('缺字段时使用默认值', () => {
- const yaml = `spec_version: "7.0"
- 书名: 最小配置
- 类型: 玄幻
- 每章目标字数: 3000
- 卷规模: 40`
- const result = parseBookConfig(yaml)
- assert.equal(result.ok, true)
- assert.equal(result.data.书名, '最小配置')
- assert.equal(result.data.文体基线起, 1) // 默认值
- assert.equal(result.data.伏笔悬了太久章数, 10) // 默认值
- assert.equal(result.data.连写批次大小, 8) // 默认值
- })
- test('边界:YAML 语法错误', () => {
- const yaml = `书名: "未闭合`
- const result = parseBookConfig(yaml)
- assert.equal(result.ok, false)
- assert.ok(result.error.includes('解析失败'))
- })
- test('边界:空 YAML', () => {
- const yaml = ``
- const result = parseBookConfig(yaml)
- assert.equal(result.ok, true)
- assert.equal(result.data.书名, '未命名') // 全部默认值
- assert.equal(result.data.每章目标字数, 3000)
- })
|