44 lines
2.7 KiB
TypeScript
44 lines
2.7 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { buildAdjudicationPresentation, resolvePoseAssetId } from './narrativeRepository.js'
|
|
|
|
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()
|
|
})
|
|
})
|
|
|
|
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)
|
|
})
|
|
})
|