5d3e264cf3
Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { DatabaseSync } from 'node:sqlite'
|
|
import { migrate } from '../../src/main/db/migrate'
|
|
import { AiSessionRepository } from '../../src/main/db/repositories/ai-session.repo'
|
|
import { WizardWritingService } from '../../src/main/services/wizard-writing.service'
|
|
import { AiClientService } from '../../src/main/services/ai-client.service'
|
|
import { DEFAULT_AI_CONFIG } from '../../src/shared/types'
|
|
|
|
const AI_TEST_CONFIG = { ...DEFAULT_AI_CONFIG, timeoutMs: 240_000, maxTokens: 4096 }
|
|
const CONTEXT = '林远站在演武场中央,众人目光汇聚,等待入门考核开始。'
|
|
|
|
describe('WizardWritingService.buildPreview', () => {
|
|
const service = (db: DatabaseSync) =>
|
|
new WizardWritingService(db, new AiClientService(() => AI_TEST_CONFIG))
|
|
|
|
it('IT-WIZ-01: buildPreview returns non-empty HTML', async () => {
|
|
const db = new DatabaseSync(':memory:')
|
|
migrate(db)
|
|
const session = new AiSessionRepository(db).create('t', DEFAULT_AI_CONFIG.model)
|
|
const svc = service(db)
|
|
let flow = svc.start(session.id)
|
|
flow = svc.setGoal(flow.id, {
|
|
chapterGoal: '林远通过入门考核,展现天赋震惊众人',
|
|
wordMin: 800,
|
|
wordMax: 1500
|
|
})
|
|
flow = svc.setRhythm(flow.id, 'mixed')
|
|
flow = svc.setPov(flow.id)
|
|
flow = svc.confirmContext(
|
|
flow.id,
|
|
{ chapterIds: [], outlineIds: [], settingIds: [], inspirationIds: [] },
|
|
CONTEXT
|
|
)
|
|
|
|
const preview = await svc.buildPreview(flow.id, CONTEXT, '林远')
|
|
expect(preview).toMatch(/<p>/)
|
|
expect(preview.replace(/<[^>]+>/g, '').trim().length).toBeGreaterThan(10)
|
|
db.close()
|
|
}, 240_000)
|
|
})
|