19 lines
1.5 KiB
JavaScript
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.');
|