Files
SGF/scripts/workshop-billing-form-check.mjs
T

19 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict';
import {workshopBillingProposal} from '../resources/js/workshopBillingProposal.js';
const order={client_id:16,entries:[{id:6,version:1},{id:4,version:1}],proposals:[]},services=[{id:9,version:1}];
const form=new FormData();
assert.throws(()=>workshopBillingProposal(order,services,form),/Incluir origem integral/);
form.set('select-6','on');
assert.throws(()=>workshopBillingProposal(order,services,form),/Origem #6: seleccione o serviço/);
form.set('service-6','9');
assert.throws(()=>workshopBillingProposal(order,services,form),/Origem #6: preencha o preço/);
form.set('price-6','0');
assert.throws(()=>workshopBillingProposal(order,services,form),/fonte comercial/);
form.set('source-6','WORKSHOP-SALES-SYNTHETIC-v1');
assert.throws(()=>workshopBillingProposal(order,services,form),/fundamento/);
form.set('evidence','Proposta sintética');
const zero=workshopBillingProposal(order,services,form);assert.equal(zero.lines[0].price,'0');assert.equal(zero.lines.length,1);
form.set('select-4','on');form.set('service-4','9');form.set('price-4','200');form.set('source-4','WORKSHOP-SALES-SYNTHETIC-v1');form.set('price-6','75');
const proposal=workshopBillingProposal(order,services,form);assert.deepEqual(proposal.lines.map(l=>l.price),['75','200']);assert.equal(proposal.previous_id,null);assert.equal(proposal.version,1);
console.log('Workshop form checks passed: missing selection/service/price/source/evidence; explicit zero; exact selected values. No database or browser used.');