sanity-plugin-taxonomy-manager
Version:
Create and manage SKOS compliant taxonomies, thesauri, and classification schemes in Sanity Studio.
43 lines (35 loc) • 1.77 kB
text/typescript
import {describe, expect, it} from 'vitest'
import {conceptFilter, prefLabelUniquenessResult} from './validation'
describe('conceptFilter', () => {
it('excludes self and already-referenced broader/related concepts', () => {
const result = conceptFilter({
document: {_id: 'concept-1', broader: [{_ref: 'b-1'}, {_ref: 'b-2'}], related: [{_ref: 'r-1'}]} as never,
})
expect(result.filter).toBe('!(_id in $broader || _id in $related || _id == $self)')
expect(result.params).toEqual({self: 'concept-1', broader: ['b-1', 'b-2'], related: ['r-1']})
})
it('defaults broader/related to empty arrays when absent', () => {
const result = conceptFilter({document: {_id: 'concept-1'} as never})
expect(result.params.broader).toEqual([])
expect(result.params.related).toEqual([])
})
it('normalizes self to the published id (strips the drafts. prefix)', () => {
const result = conceptFilter({document: {_id: 'drafts.concept-1'} as never})
expect(result.params.self).toBe('concept-1')
})
})
describe('prefLabelUniquenessResult', () => {
it('returns the error when a different published concept already uses the label', () => {
expect(prefLabelUniquenessResult('other-concept', 'concept-1')).toBe(
'Preferred Label must be unique.',
)
})
it('passes when the existing match is the current document (draft or published)', () => {
expect(prefLabelUniquenessResult('concept-1', 'drafts.concept-1')).toBe(true)
expect(prefLabelUniquenessResult('concept-1', 'concept-1')).toBe(true)
})
it('passes when no existing concept uses the label', () => {
expect(prefLabelUniquenessResult(null, 'concept-1')).toBe(true)
expect(prefLabelUniquenessResult(undefined, 'concept-1')).toBe(true)
})
})