import assert from 'node:assert/strict' import test from 'node:test' import { classifyCommit, makeIdempotencyKey, normalizeRepoName, selectUniqueProject, validateStatusEvidence, } from '../../scripts/kaifa-progress-sync.mjs' test('normalizes repository names and builds a stable idempotency key', () => { assert.equal(normalizeRepoName('http://git.example.com/team/CaiWuXiTong.git'), 'CaiWuXiTong') assert.equal(makeIdempotencyKey('CaiWuXiTong', 'abc123', 'testing'), 'CaiWuXiTong:abc123:testing') }) test('matches exactly one project and rejects ambiguous matches', () => { const project = { projectId: 'p1', projectName: '财务系统', department: '财务中心', repoName: 'CaiWuXiTong', productionUrl: 'https://218.93.190.75:8442', deploymentName: 'caiwuxitong', } const identity = { projectName: '财务系统', repoName: 'CaiWuXiTong', productionUrl: 'https://218.93.190.75:8442', deploymentName: 'caiwuxitong', } assert.equal(selectUniqueProject([project], identity).projectId, 'p1') assert.throws(() => selectUniqueProject([project, { ...project, projectId: 'p2' }], identity), /AMBIGUOUS/) }) test('assigns one primary feature and stops on ambiguous feature matches', () => { assert.equal(classifyCommit('财务经营报表增加安装明细', ['app/Models/Business/InstallationDetail.php']).rule.key, 'installation-details') assert.equal(classifyCommit('修复云数据库管理不支持 PostgreSQL 连接', ['app/Http/Controllers/SystemSettings/Databases.php']).rule.key, 'upstream-connections') assert.throws( () => classifyCommit('chore: shared update', ['app/Utilities/SystemDatabaseConfiguration.php', 'modules/EcommerceFinance/Services/UpstreamOdbcConnection.php']), /FEATURE_MATCH_AMBIGUOUS/, ) }) test('done requires passed tests and explicit acceptance evidence', () => { assert.throws(() => validateStatusEvidence('done', { testStatus: 'passed', acceptanceEvidence: '' }), /DONE_REQUIRES/) assert.doesNotThrow(() => validateStatusEvidence('done', { testStatus: 'passed', acceptanceEvidence: 'production SHA verified' })) })