54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
||
import { buildPromptAssetContext, compileAssetPromptFragments } from '@/lib/assets/services/asset-prompt-context'
|
||
|
||
describe('asset prompt context', () => {
|
||
it('compiles subject, environment, and prop prompt fragments from the centralized asset context', () => {
|
||
const context = buildPromptAssetContext({
|
||
characters: [
|
||
{
|
||
name: '小雨/雨',
|
||
appearances: [
|
||
{
|
||
changeReason: '初始形象',
|
||
descriptions: ['黑色短发,校服,冷静表情'],
|
||
selectedIndex: 0,
|
||
description: 'fallback description',
|
||
},
|
||
],
|
||
},
|
||
],
|
||
locations: [
|
||
{
|
||
name: '天台',
|
||
images: [
|
||
{
|
||
isSelected: true,
|
||
description: '夜晚天台,冷风,霓虹远景',
|
||
availableSlots: JSON.stringify([
|
||
'天台栏杆左侧靠近边缘的位置',
|
||
]),
|
||
},
|
||
],
|
||
},
|
||
],
|
||
props: [
|
||
{
|
||
name: '青铜匕首',
|
||
summary: '古旧短刃,雕纹手柄',
|
||
},
|
||
],
|
||
clipCharacters: [{ name: '雨' }],
|
||
clipLocation: '天台',
|
||
clipProps: ['青铜匕首'],
|
||
})
|
||
|
||
expect(compileAssetPromptFragments(context)).toEqual({
|
||
appearanceListText: '小雨/雨: ["初始形象"]',
|
||
fullDescriptionText: '【小雨/雨 - 初始形象】黑色短发,校服,冷静表情',
|
||
locationDescriptionText: '夜晚天台,冷风,霓虹远景\n\n可站位置:\n- 天台栏杆左侧靠近边缘的位置',
|
||
propsDescriptionText: '【青铜匕首】古旧短刃,雕纹手柄',
|
||
charactersIntroductionText: '暂无角色介绍',
|
||
})
|
||
})
|
||
})
|