3 lines
2.9 KiB
JavaScript
3 lines
2.9 KiB
JavaScript
import fs from 'node:fs';import assert from 'node:assert/strict';import {session} from './sgf-single-http.mjs';import {overviewSources,overviewPage} from '../resources/js/workspace-overview.js';
|
|
const checks=[],ok=(v,n)=>{assert(v,n);checks.push(n);},s=await session('sgf:workshop_manage','workshop');let r=await s.get('/api/workshop/orders?per_page=25');assert.equal(r.status,200);const data=await r.json();ok(data.read_only&&data.states_are==='current_resource_records_not_delivery_or_payment','read contract honest');ok(data.orders.data.length>0&&data.orders.per_page===25,'existing orders actual page25');ok(data.orders.data.every(o=>o.client&&o.equipment&&o.points>=o.points_not_verified&&o.minutes_reported>=o.minutes_verified),'actual client equipment and point/time counts');r=await s.get('/api/workshop/orders?per_page=100');const large=await r.json();ok(r.status===200&&large.orders.total===data.orders.total&&data.orders.data.every(a=>large.orders.data.some(b=>a.id===b.id)),'page25 and100 equivalent known rows');const chosen=data.orders.data[0];r=await s.get('/api/workshop/orders?search='+encodeURIComponent(chosen.reference));ok(r.status===200&&(await r.json()).orders.data.some(o=>o.id===chosen.id),'search actual reference');r=await s.get('/api/workshop/orders?state='+chosen.state);ok(r.status===200&&(await r.json()).orders.data.every(o=>o.state===chosen.state),'actual SQL state filter');r=await s.get('/api/workshop/orders?tenant_id=2');ok(r.status===422,'tenant override refused');r=await s.get('/api/workshop/orders?per_page=1000');ok(r.status===422,'unbounded page refused');const denied=await session('sgf:commercial_prepare','commercial');r=await denied.get('/api/workshop/orders');ok([403,409].includes(r.status),'other module refused');const tech=await session('sgf:workshop_record','workshop');r=await tech.get('/api/workshop/orders');const visible=await r.json();ok(r.status===200&&visible.orders.data.every(o=>o.technician_id===tech.identity.user.id),'technician sees only current assignments');const c=s.identity.context,source=overviewSources(c,(p,u)=>c.grants.some(g=>g.permission===p&&g.unit_id===u)).find(s=>s.id==='orders'),page=overviewPage(source,data);ok(page.rows.every(o=>o.evidence&&o.value.includes('min verificados')),'home order overview uses actual evidence and time');const run=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json')),root=run.root+'/private/receipt-composition-cc50a276c10c';const samples=JSON.parse(fs.readFileSync(root+'/overview-samples-private.json'));samples['workshop:orders']={source,page};fs.writeFileSync(root+'/overview-samples-private.json',JSON.stringify(samples));fs.writeFileSync(root+'/workshop-orders-sample-private.json',JSON.stringify(data));const file=root+'/workshop-orders-http-20261110.json';fs.writeFileSync(file,JSON.stringify({passed:true,checks,business_commands:0,new_rights:0,source_mutations:0},null,2));console.log(JSON.stringify({passed:true,checks:checks.length,proof:file}));
|