import assert from 'node:assert/strict'; import fs from 'node:fs/promises'; import React from 'react'; import {renderToStaticMarkup} from 'react-dom/server'; import {createServer} from 'vite'; const vite=await createServer({server:{middlewareMode:true},appType:'custom'}); try{ const {accountingSections,accountingFunctions,accountingReports,visibleAccountingSections,filterAccountingReports}=await vite.ssrLoadModule('/resources/js/accounting-menu.js'); const {default:Workspace}=await vite.ssrLoadModule('/resources/js/AccountingMenuWorkspace.jsx'); const {navigationGroups}=await vite.ssrLoadModule('/resources/js/WorkspaceNavigation.jsx'); const context={token:'synthetic',company:{id:1,name:'Empresa sintética A'},unit:{id:7,name:'Unidade A'}}; const companyCan=p=>p==='company.view'; assert.equal(accountingSections.length,6);assert.equal(accountingFunctions.length,11);assert.equal(accountingReports.length,24); assert.deepEqual(visibleAccountingSections(()=>false),[]);assert.deepEqual(visibleAccountingSections(p=>p==='access.manage'),[]); assert.equal(visibleAccountingSections(p=>p==='catalogue_accounting.view').length,6); const group=navigationGroups(companyCan,7).find(g=>g.id==='accounting');assert.equal(group.items.length,6);assert(group.items.every(i=>i.informational)); assert(!group.items.some(i=>i.id==='catalogue_accounting')); const accountantCan=p=>companyCan(p)||p==='catalogue_accounting.view'; assert(navigationGroups(accountantCan,7).find(g=>g.id==='accounting').items.some(i=>i.id==='catalogue_accounting')); assert(filterAccountingReports('depreciacoes').some(r=>r.id==='assets')); assert(filterAccountingReports('fornecedores','Tesouraria').some(r=>r.id==='suppliers')); assert.deepEqual(filterAccountingReports('fornecedores','Pessoal'),[]); for(const section of accountingSections){ const render=can=>renderToStaticMarkup(React.createElement(Workspace,{section:section.id,context,can,navigate:()=>{}})); const html=render(companyCan);assert(html.includes('Submenus de contabilidade'));assert(html.includes('Empresa sintética A')); assert(!html.includes('