| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import assert from 'node:assert/strict'
- import test from 'node:test'
- import {
- detailHeaders,
- formatMetricRate,
- metricPresentation,
- scopePresentation,
- statePresentation
- } from '../src/views/dataGovernance/development/governanceMetricsModel.js'
- test('formats available percentages and keeps no data distinct from zero', () => {
- assert.equal(formatMetricRate({ rate: 0, status: 'available' }), '0.0%')
- assert.equal(formatMetricRate({ rate: 0.666667, status: 'available' }), '66.7%')
- assert.equal(formatMetricRate({ rate: null, status: 'no_data' }), '暂无数据')
- })
- test('presents the five fixed governance metrics and their trace states', () => {
- assert.equal(metricPresentation('asset_completeness').name, '台账完整率')
- assert.equal(metricPresentation('responsibility_coverage').name, '责任覆盖率')
- assert.equal(metricPresentation('entity_mapping').name, '实体映射率')
- assert.equal(metricPresentation('issue_closure').name, '问题闭环率')
- assert.equal(metricPresentation('issue_recurrence').name, '问题复发率')
- assert.equal(statePresentation('incomplete').label, '不完整设备')
- assert.equal(statePresentation('recurrent').label, '复发问题')
- })
- test('makes global and business-domain authorization scopes explicit', () => {
- assert.equal(
- scopePresentation({ global_access: true, business_domain_uids: [] }),
- '全部可访问范围'
- )
- assert.equal(
- scopePresentation({
- global_access: false,
- business_domain_uids: ['domain-a', 'domain-b']
- }),
- '按服务端业务域授权过滤(2 个业务域)'
- )
- assert.equal(
- scopePresentation({ global_access: false, business_domain_uids: [] }),
- '当前没有已授权业务域'
- )
- })
- test('detail columns are bounded to safe asset and issue fields', () => {
- const assetValues = detailHeaders('asset_completeness').map(item => item.value)
- const issueValues = detailHeaders('issue_recurrence').map(item => item.value)
- assert.deepEqual(assetValues, [
- 'asset_name',
- 'asset_type',
- 'location',
- 'organization',
- 'responsible_person',
- 'source_codes',
- 'missing_fields'
- ])
- assert.deepEqual(issueValues, [
- 'issue_code',
- 'asset_name',
- 'rule_code',
- 'field_name',
- 'priority',
- 'status',
- 'occurrence_number',
- 'assignee_uid',
- 'due_at',
- 'closed_at',
- 'overdue'
- ])
- for (const forbidden of ['attributes', 'evidence', 'message', 'config', 'permission_scope']) {
- assert.ok(!assetValues.includes(forbidden))
- assert.ok(!issueValues.includes(forbidden))
- }
- })
|