2026-08-18 15:37:46 +02:00
import { describe , expect , it } from 'vitest'
2026-08-23 23:20:40 +02:00
import { buildAdjudicationPresentation , resolvePoseAssetId } from './narrativeRepository.js'
2026-08-18 15:37:46 +02:00
describe ( 'resolvePoseAssetId' , () => {
const poses = { neutral : 'asset-neutral' , concerned : 'asset-concerned' , missing : null }
it ( 'returns the requested pose asset when present' , () => {
expect ( resolvePoseAssetId ( poses , 'concerned' , 'neutral' )). toBe ( 'asset-concerned' )
})
it ( 'falls back to the NPC default pose when the requested pose is absent' , () => {
expect ( resolvePoseAssetId ( poses , 'pointing' , 'neutral' )). toBe ( 'asset-neutral' )
})
it ( 'falls back to the default when the requested pose exists but has no artwork' , () => {
expect ( resolvePoseAssetId ( poses , 'missing' , 'neutral' )). toBe ( 'asset-neutral' )
})
it ( 'returns null (no artwork) when neither requested nor default resolves' , () => {
expect ( resolvePoseAssetId ( poses , 'pointing' , 'also-missing' )). toBeNull ()
expect ( resolvePoseAssetId ( poses , null , null )). toBeNull ()
expect ( resolvePoseAssetId ({}, 'neutral' , 'neutral' )). toBeNull ()
})
})
2026-08-23 23:20:40 +02:00
describe ( 'buildAdjudicationPresentation' , () => {
it ( 'presents only evidence accepted by the submitted report' , () => {
const presentation = buildAdjudicationPresentation ({
title : 'Barricelli Inventor Finding' , investigatorName : 'Mutable byline' , requiredForCompletion : true ,
status : 'accepted' , issues : [], claims : [{ claimExhibitId : 'claim-1' , statement : 'Nils Aall Barricelli was an inventor.' , evidence : [
{ connectionId : 'connection-1' , documentExhibitId : 'document-1' , displayNumber : 1 , documentTitle : 'Patent record' , fileType : 'image' ,
relationText : 'Proves that Barricelli filed a patent.' , publishedAt : '1953-08-19T00:00:00.000Z' , sourceCitation : 'Google Patents' , sourceUri : 'https://patents.example/1' ,
evidenceAccepted : true , verification : { status : 'accepted' , detail : 'Matched.' } },
{ connectionId : 'connection-2' , documentExhibitId : 'document-2' , displayNumber : 2 , documentTitle : 'Unverified image' , fileType : 'image' ,
relationText : 'Maybe related.' , evidenceAccepted : false , verification : { status : 'not_evaluated' , detail : 'Not checked.' } },
] }],
}, { investigatorName : 'Ada Investigator' , submittedAt : new Date ( '2026-08-23T12:00:00.000Z' ) })
expect ( presentation ). toMatchObject ({
kind : 'case-adjudication' , investigatorName : 'Ada Investigator' , submittedAt : '2026-08-23T12:00:00.000Z' ,
finding : 'SUPPORTED BY THE SUBMITTED EVIDENCE' , stampText : 'CASE VERIFIED' ,
claims : [{ statement : 'Nils Aall Barricelli was an inventor.' , evidence : [{ displayNumber : 1 , title : 'Patent record' }] }],
})
expect ( presentation . claims [ 0 ]. evidence ). toHaveLength ( 1 )
})
})