'use strict'; const assert = require('node:assert/strict'); const test = require('node:test'); const { buildCatalog } = require('../../../app/lib/weapp_contract_catalog'); test('合同目录仅统计可见合同,并向上汇总各级目录数量', () => { const folders = [ { contract_id: 1, contract_pid: -1, code: '1', name: '第一部分', order: 1 }, { contract_id: 2, contract_pid: -1, code: '2', name: '第二部分', order: 2 }, { contract_id: 3, contract_pid: 1, code: '1-1', name: '子目录', order: 1 }, ]; const visibleContracts = [ { id: 'row-4', contract_id: 4, contract_pid: 3, c_code: 'HT-1', name: '合同一', order: 1, fileCount: 2 }, { id: 'row-4', contract_id: 4, contract_pid: 3, c_code: 'HT-1', name: '合同一', order: 1 }, { id: 'row-5', contract_id: 5, contract_pid: 3, c_code: 'HT-2', name: '合同二', order: 2 }, { contract_id: 6, contract_pid: 999, c_code: 'HT-3', name: '无目录合同', order: 3 }, ]; const nodes = buildCatalog(folders, visibleContracts); assert.deepEqual(nodes.filter(node => node.kind === 'folder').map(node => node.count), [2, 0, 2]); assert.deepEqual(nodes.filter(node => node.kind === 'contract').map(node => node.id), ['4', '5']); assert.equal(nodes[3].parentId, '3'); assert.equal(nodes[3].rowId, 'row-4'); assert.equal(nodes[3].fileCount, 2); });