From 65ba1d466453e9848ea1197f46808a4b35e2a18d Mon Sep 17 00:00:00 2001 From: jgallego Date: Tue, 20 Aug 2024 10:11:56 +0200 Subject: [PATCH] feat: refs #7346 backTest checks new implementation --- .../invoiceOut/specs/invoiceClient.spec.js | 61 ++++++++++++------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js index cffae394f6..369257ebef 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/invoiceClient.spec.js @@ -1,4 +1,5 @@ const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('InvoiceOut invoiceClient()', () => { const userId = 1; @@ -22,6 +23,11 @@ describe('InvoiceOut invoiceClient()', () => { }; const ctx = {req: activeCtx}; + beforeAll(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); it('should make a global invoicing by address and verify billing status', async() => { spyOn(models.InvoiceOut, 'makePdf').and.returnValue(Promise.resolve(true)); @@ -85,34 +91,47 @@ describe('InvoiceOut invoiceClient()', () => { const options = {transaction: tx}; try { - console.log('Searching for client with ID:', clientId); - const client = await models.Client.findById(clientId, options); - console.log('Found client:', JSON.stringify(client, null, 2)); + const client = await models.Client.findById(clientId, null, options); + await client.updateAttribute('hasToInvoiceByAddress', false, options); - if (!client) - throw new Error(`Client with id ${clientId} not found`); + ctx.args = { + clientId: clientId, + invoiceDate: Date.vnNew(), + maxShipped: Date.vnNew(), + companyFk: companyFk, + serialType: 'global' + }; - console.log('Client before update:', JSON.stringify(client, null, 2)); - console.log('Current hasToInvoiceByAddress value:', client.hasToInvoiceByAddress); + const invoiceOutId = await models.InvoiceOut.invoiceClient(ctx, options); - try { - console.log('Attempting to update hasToInvoiceByAddress'); - await client.updateAttribute('hasToInvoiceByAddress', false, options); - console.log('Update successful'); - } catch (updateError) { - console.error('Error updating hasToInvoiceByAddress:', updateError); - console.error('Error stack:', updateError.stack); - throw updateError; - } + const invoiceOut = await models.InvoiceOut.findById(invoiceOutId, null, options); - console.log('Client after update:', JSON.stringify(client, null, 2)); - console.log('New hasToInvoiceByAddress value:', client.hasToInvoiceByAddress); + expect(invoiceOutId).toBeGreaterThan(0); + + const allClientTickets = await models.Ticket.find({ + where: { + clientFk: clientId, + or: [ + {refFk: null}, + {refFk: invoiceOut.ref} + ] + } + }, options); + + const billedTickets = await models.Ticket.find({ + where: {refFk: invoiceOut.ref} + }, options); + + const allTicketsBilled = allClientTickets.every(ticket => ticket.refFk === invoiceOut.ref); + + expect(allTicketsBilled).toBe(true); + + const billedAddresses = new Set(billedTickets.map(ticket => ticket.addressFk)); + + expect(billedAddresses.size).toBeGreaterThan(1); - console.log('Test completed successfully'); await tx.rollback(); } catch (e) { - console.error('Test failed:', e); - console.error('Error stack:', e.stack); await tx.rollback(); throw e; }