device-semantics-model.test.mjs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import assert from 'node:assert/strict'
  2. import test from 'node:test'
  3. import {
  4. canEditDeviceSemantics,
  5. canReviewDeviceSemantics,
  6. codeStatusLabel,
  7. codeTypeLabel,
  8. semanticCoverage
  9. } from '../src/views/dataGovernance/ontology/deviceSemanticsModel.js'
  10. test('separates device semantic editing from accountable review', () => {
  11. assert.equal(
  12. canEditDeviceSemantics(['device-semantics:edit']),
  13. true
  14. )
  15. assert.equal(
  16. canReviewDeviceSemantics(['device-semantics:edit']),
  17. false
  18. )
  19. assert.equal(
  20. canReviewDeviceSemantics(['device-semantics:review']),
  21. true
  22. )
  23. })
  24. test('presents governed code types and workflow states in Chinese', () => {
  25. assert.equal(codeTypeLabel('fault'), '故障')
  26. assert.equal(codeTypeLabel('cause'), '原因')
  27. assert.equal(codeTypeLabel('action'), '措施')
  28. assert.equal(codeStatusLabel('in_review'), '待审批')
  29. assert.equal(codeStatusLabel('published'), '已发布')
  30. })
  31. test('summarizes semantic coverage without dividing by zero', () => {
  32. assert.deepEqual(
  33. semanticCoverage({
  34. class_count: 11,
  35. relation_count: 10,
  36. mapping_count: 6,
  37. missing_classes: [],
  38. missing_relations: [],
  39. missing_mappings: []
  40. }),
  41. { covered: 27, missing: 0, total: 27, percent: 100 }
  42. )
  43. assert.deepEqual(
  44. semanticCoverage({}),
  45. { covered: 0, missing: 0, total: 0, percent: 0 }
  46. )
  47. })