weapp_contract_catalog.test.js 1.4 KB

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