const fs=require('node:fs');
|
const path=require('node:path');
|
const assert=require('node:assert/strict');
|
const root=path.resolve(__dirname,'../..');
|
const front=path.join(root,'mom-pro2-before');
|
const ts=require(path.join(front,'node_modules/typescript'));
|
const sfc=require(require.resolve('vue/compiler-sfc',{paths:[front]}));
|
const changes=JSON.parse(fs.readFileSync(path.join(__dirname,'changes.json'),'utf8'));
|
for (const c of changes) {
|
const file=path.join(root,c.file),text=fs.readFileSync(file,'utf8');
|
assert.equal(text,c.after,'Source changed after recorded removal: '+c.file);
|
assert(!/clientCode|客户编码|MD_CLIENT_CODE/.test(text),c.file);
|
if (file.endsWith('.ts')) assert.equal(ts.createSourceFile(file,text,ts.ScriptTarget.Latest,true).parseDiagnostics.length,0,c.file);
|
if (file.endsWith('.vue')) {
|
const parsed=sfc.parse(text,{filename:file});assert.equal(parsed.errors.length,0);
|
assert.equal(sfc.compileTemplate({source:parsed.descriptor.template.content,filename:file,id:'customer-selector'}).errors.length,0);
|
sfc.compileScript(parsed.descriptor,{id:'customer-selector'});
|
}
|
if (file.endsWith('.java')&&c.before.includes('private String clientCode;')) {
|
assert(text.includes('private String clientName;'),c.file);
|
if (c.before.includes('private Long clientId;')) assert(text.includes('private Long clientId;'),c.file);
|
const priorFields=[...c.before.matchAll(/private\s+[^;\r\n]+\s+(\w+);/g)].map(x=>x[1]);
|
const afterFields=[...text.matchAll(/private\s+[^;\r\n]+\s+(\w+);/g)].map(x=>x[1]);
|
assert.deepEqual(afterFields,priorFields.filter(x=>x!=='clientCode'),c.file);
|
}
|
}
|
// Execute the actual customer selector schemas, ensuring name lookup/ID selection remain.
|
const filename=path.join(front,'src/views/mes/md/client/data.ts');
|
const js=ts.transpileModule(fs.readFileSync(filename,'utf8'),{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2020}}).outputText;
|
const out={};new Function('exports','require',js)(out,()=>({DICT_TYPE:{MES_CLIENT_TYPE:'mes_client_type',COMMON_STATUS:'common_status'}}));
|
const form=out.useClientSelectGridFormSchema();assert(form.some(x=>x.fieldName==='name'));assert(!form.some(x=>x.fieldName==='code'));
|
const multiple=out.useClientSelectGridColumns(true),single=out.useClientSelectGridColumns(false);
|
assert.equal(multiple[0].type,'checkbox');assert.equal(single[0].type,'radio');assert(multiple.some(x=>x.field==='name'));assert(!multiple.some(x=>x.field==='code'));
|
const result={passed:true,modified_files:changes.length,customer_code_references:0,backend_other_fields_preserved:true,customer_selector_name_search_and_selection_preserved:true,typescript_and_vue_syntax_checked:true};
|
fs.writeFileSync(path.join(__dirname,'verification.json'),JSON.stringify(result,null,2));console.log(JSON.stringify(result));
|