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 server=await createServer({server:{middlewareMode:true},appType:'custom'}); try{ const {stockSections,visibleStockSections,availableStockReports}=await server.ssrLoadModule('/resources/js/stock-menu.js'); const {default:Workspace}=await server.ssrLoadModule('/resources/js/StockMenuWorkspace.jsx'); const {navigationGroups}=await server.ssrLoadModule('/resources/js/WorkspaceNavigation.jsx'); const {default:Home}=await server.ssrLoadModule('/resources/js/WorkspaceHome.jsx'); const companyCan=p=>p==='company.view'; const context={token:'synthetic',company:{id:1,name:'Empresa sintética A'},unit:{id:7,name:'Unidade A'}}; assert.deepEqual(stockSections.map(s=>s.label),['Painel','Existências','Entradas','Saídas','Transferências','Devoluções','Relatórios']); assert.deepEqual(visibleStockSections(()=>false),[]); assert.deepEqual(visibleStockSections(p=>p==='workshop.view'),[]); assert.deepEqual(availableStockReports().map(r=>r.id),['balances','movements','minimum']); assert(!availableStockReports({transit:true,returns:true,lots:true,inventory:true,history:true},false).some(r=>r.restricted)); assert(availableStockReports({},true).some(r=>r.id==='valuation')); assert(!availableStockReports({transit:false,lots:false}).some(r=>r.feature)); const groups=navigationGroups(companyCan,7),stock=groups.find(g=>g.id==='stock'); assert.equal(stock.status,'Em preparação');assert(stock.items.every(i=>i.informational)); const home=renderToStaticMarkup(React.createElement(Home,{context,can:companyCan,groups,navigate:()=>{}}));assert(home.includes('shortcut-status')); for(const section of stockSections){ const html=renderToStaticMarkup(React.createElement(Workspace,{section:section.id,context,can:companyCan,navigate:()=>{}})); assert(html.includes('fonte de stock ainda não ligada'));assert(html.includes('Empresa sintética A'));assert(html.includes('Submenus de stock')); assert(!html.includes('