#!/usr/bin/env node const assert = require('node:assert/strict'); const fs = require('node:fs'); const path = require('node:path'); const vm = require('node:vm'); const root = path.resolve(__dirname, '..'); const suppliers = fs.readFileSync(path.join(root, 'prototype-src/modules/05-suppliers.html'), 'utf8'); const general = fs.readFileSync(path.join(root, 'prototype-src/modules/10-general.html'), 'utf8'); const shell = fs.readFileSync(path.join(root, 'prototype-src/shell.html'), 'utf8'); const app = fs.readFileSync(path.join(root, 'prototype-src/app.js'), 'utf8'); const manifest = JSON.parse(fs.readFileSync(path.join(root, 'prototype-src/manifest.json'), 'utf8')); const supplierModule = manifest.modules.find(module => module.file === 'modules/05-suppliers.html'); assert.ok(supplierModule, '缺少供应商模块'); const generalModule = manifest.modules.find(module => module.file === 'modules/10-general.html'); assert.ok(generalModule, '缺少通用资料模块'); assert.ok(!supplierModule.pages.includes('delivery-fleet-quote'), '供应商模块不应继续登记派送车队报价表'); assert.ok(generalModule.pages.includes('delivery-fleet-quote'), '通用资料模块缺少派送车队报价表'); assert.equal(generalModule.pages.indexOf('delivery-fleet-quote'), generalModule.pages.indexOf('vehicle') + 1, '通用模块中派送车队报价表应紧跟车辆列表'); assert.equal(manifest.pageOrder.indexOf('delivery-fleet-quote'), manifest.pageOrder.indexOf('vehicle') + 1, '顶层页面顺序中派送车队报价表应紧跟车辆列表'); assert.equal((shell.match(/switchPage\('delivery-fleet-quote',this\)/g) || []).length, 1, '侧栏只能保留一个派送车队报价表入口'); assert.match(shell, /switchPage\('vehicle',this\)[^>]*>车辆列表<\/div>\s*