4 lines
1.9 KiB
JavaScript
4 lines
1.9 KiB
JavaScript
import fs from 'node:fs';import path from 'node:path';import assert from 'node:assert/strict';import React from 'react';import {renderToStaticMarkup} from 'react-dom/server';import {createServer} from 'vite';
|
|
const run=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json')),out='docs/proofs/stock-ledger-menu-final-20261103.json';if(fs.existsSync(out))throw Error('Completed proof preserved');const server=await createServer({configFile:false,cacheDir:path.join(run.root,'private/stock-menu-final-vite-cache'),optimizeDeps:{noDiscovery:true,include:[]},server:{middlewareMode:true},appType:'custom'});let checks=0;
|
|
try{const {default:Menu}=await server.ssrLoadModule('/resources/js/AccountingMenuWorkspace.jsx');const render=(flag,stock=true,gl=true)=>renderToStaticMarkup(React.createElement(Menu,{section:'accounting_panel',context:{token:'qa',company:{name:'QA'},unit:{id:2,name:'QA'},accounting:{stock_valuation_read:flag}},can:(p,u)=>p==='company.view'||(u===2&&((p==='stock.view'&&stock)||(p==='general_ledger.view'&&gl))),navigate(){}}));const check=(v,n)=>{assert(v,n);checks++;};check(render(true).includes('href="/general-ledger/stock-valuation"'),'configured observer entry visible');check(!render(true).includes('href="/general-ledger"'),'observer composition does not advertise unavailable local writer');check(render(false).includes('href="/general-ledger"'),'prior local writer entry preserved outside observer composition');check(!render(true,false).includes('href="/general-ledger/stock-valuation"'),'stock right required');check(!render(true,true,false).includes('href="/general-ledger/stock-valuation"'),'ledger right required');fs.writeFileSync(out,JSON.stringify({passed:true,checks,react_static_render:true,actual_browser:false,existing_other_composition_route_preserved:true},null,2));console.log(JSON.stringify({passed:true,checks}));}finally{await server.close();}
|