sanity-plugin-taxonomy-manager
Version:
Create and manage SKOS compliant taxonomies, thesauri, and classification schemes in Sanity Studio.
63 lines (49 loc) • 2.24 kB
text/typescript
import {renderHook} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import {planCreateConcept} from '../core/mutations'
import type {ConceptSchemeDocument, DocumentConcepts} from '../types'
import {createFakeDataPort} from './FakeDataPort'
const scheme = {_id: 'scheme-1', _type: 'skosConceptScheme'} as ConceptSchemeDocument['displayed']
const TREE: DocumentConcepts = {topConcepts: [], concepts: []}
describe('createFakeDataPort', () => {
it('useWatchTree returns the configured fixture synchronously and records params', () => {
const port = createFakeDataPort({tree: TREE})
const params = {mode: 'trunk', documentId: 'scheme-1', perspective: undefined} as const
const {result} = renderHook(() => port.useWatchTree(params))
expect(result.current).toEqual({data: TREE, loading: false, error: null})
expect(port.lastWatchParams).toEqual(params)
})
it('defaults to a null, non-loading, error-free result', () => {
const port = createFakeDataPort()
const {result} = renderHook(() =>
port.useWatchTree({mode: 'trunk', documentId: 's', perspective: undefined})
)
expect(result.current).toEqual({data: null, loading: false, error: null})
})
it('useApplyConceptPlan records each plan it is given, in order', async () => {
const port = createFakeDataPort()
const plan = planCreateConcept({
scheme,
conceptType: 'topConcept',
newConceptUuid: 'u',
conceptId: 'abc123',
schemeBaseIri: undefined,
newConceptKey: 'k',
broaderKey: 'b',
})
const {result} = renderHook(() => port.useApplyConceptPlan())
await result.current(plan)
expect(port.appliedPlans).toEqual([plan])
})
it('useSemanticRecommendations returns configured recs and counts search triggers', () => {
const port = createFakeDataPort({
recommendations: [{conceptId: 'd1', score: 0.9}],
})
const {result} = renderHook(() => port.useSemanticRecommendations())
expect(result.current.conceptRecs).toHaveLength(1)
expect(result.current.recsError).toBeNull()
result.current.triggerSearch('scheme-7')
expect(port.triggeredSearches).toBe(1)
expect(port.lastSearchSchemeId).toBe('scheme-7')
})
})