| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import assert from 'node:assert/strict'
- import test from 'node:test'
- import {
- applySuggestionDecisions,
- canEditOntology,
- canPublishOntology,
- emptyGraph,
- normalizeGraph,
- parseRevision,
- upsertGraphItem
- } from '../src/views/dataGovernance/ontology/model.js'
- test('normalizes every ontology graph section without mutating input', () => {
- const source = { classes: [{ uid: 'customer', name: '客户' }] }
- const graph = normalizeGraph(source)
- assert.deepEqual(Object.keys(graph), [
- 'classes',
- 'properties',
- 'relations',
- 'constraints',
- 'domain_links',
- 'element_mappings'
- ])
- assert.deepEqual(graph.classes, source.classes)
- assert.notEqual(graph.classes, source.classes)
- assert.deepEqual(emptyGraph().domain_links, [])
- })
- test('upserts an edited graph item by its stable identity', () => {
- const graph = normalizeGraph({
- classes: [{ uid: 'customer', name: '客户' }]
- })
- const updated = upsertGraphItem(
- graph,
- 'classes',
- { uid: 'customer', name: '客户主体' }
- )
- assert.equal(updated.classes.length, 1)
- assert.equal(updated.classes[0].name, '客户主体')
- })
- test('applies accepted and edited suggestions but skips rejected suggestions', () => {
- const graph = emptyGraph()
- const suggestions = [
- { uid: 's1', kind: 'class', payload: { uid: 'customer', name: '客户' } },
- { uid: 's2', kind: 'class', payload: { uid: 'order', name: '订单' } },
- { uid: 's3', kind: 'constraint', payload: { uid: 'c1', name: '非空' } }
- ]
- const decisions = [
- { suggestion_uid: 's1', decision: 'accept' },
- { suggestion_uid: 's2', decision: 'reject' },
- {
- suggestion_uid: 's3',
- decision: 'edit',
- payload: { uid: 'c1', name: '客户编号非空' }
- }
- ]
- const updated = applySuggestionDecisions(graph, suggestions, decisions)
- assert.deepEqual(updated.classes.map(item => item.uid), ['customer'])
- assert.equal(updated.constraints[0].name, '客户编号非空')
- })
- test('permissions separate edit and publish capabilities', () => {
- assert.equal(canEditOntology(['governance:read']), false)
- assert.equal(canEditOntology(['ontologies:edit']), true)
- assert.equal(canPublishOntology(['ontologies:edit']), false)
- assert.equal(canPublishOntology(['ontologies:publish']), true)
- })
- test('parses weak and quoted etag revisions safely', () => {
- assert.equal(parseRevision('"4"'), 4)
- assert.equal(parseRevision('W/"7"'), 7)
- assert.equal(parseRevision(undefined), 0)
- })
|