import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import test from 'node:test' import { fileURLToPath } from 'node:url' import { ref } from 'vue' import { useAuditViewPermissions } from '../src/views/scripts/useAuditViewPermissions.js' function readSource(path) { return readFileSync(fileURLToPath(new URL(path, import.meta.url)), 'utf8') } test('规则管理向创建流程传递当前用户的规则管理权限', () => { const permissions = useAuditViewPermissions({ currentUser: ref({ username: 'admin', isAdmin: true, roleCodes: ['manager', 'finance'] }), selectedSkill: ref(null), actionState: ref('') }) const auditViewScript = readSource('../src/views/scripts/AuditView.js') assert.equal(permissions.isRuleManager.value, true) assert.match( auditViewScript, /const\s*\{[\s\S]*?isRuleManager[\s\S]*?\}\s*=\s*useAuditViewPermissions\(/ ) assert.match( auditViewScript, /useAuditRiskRuleCreateFlow\(\{[\s\S]*?isRuleManager[\s\S]*?\}\)/ ) }) test('风险规则详情向模板暴露草稿、修订和发布权限', () => { const auditViewScript = readSource('../src/views/scripts/AuditView.js') const setupReturnBlock = auditViewScript.slice(auditViewScript.lastIndexOf('\n return {')) assert.match(setupReturnBlock, /\briskRuleHasPublishableRevision\s*,/) assert.match(setupReturnBlock, /\bcanEditRiskRuleDraft\s*,/) assert.match(setupReturnBlock, /\bcanCreateRiskRuleRevision\s*,/) })