From 5c899d28c3741ee1fd5ccb9ea18aacf3c3782178 Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 21 Dec 2021 14:43:53 +0100 Subject: [PATCH] feat(ticket_sale): add tests and refactor backRoute name --- db/changes/10400-christmas/00-ACL.sql | 2 +- e2e/helpers/selectors.js | 2 +- .../05-ticket/01-sale/02_edit_sale.spec.js | 9 +++++++ .../methods/sale/{payment.js => payBack.js} | 7 +++-- .../back/methods/sale/specs/payment.spec.js | 26 +++++++++++++++++++ modules/ticket/back/models/sale.js | 2 +- modules/ticket/front/sale/index.html | 6 ++--- modules/ticket/front/sale/index.js | 4 +-- modules/ticket/front/sale/index.spec.js | 23 +++++++--------- modules/ticket/front/sale/locale/es.yml | 2 +- 10 files changed, 56 insertions(+), 27 deletions(-) rename modules/ticket/back/methods/sale/{payment.js => payBack.js} (92%) create mode 100644 modules/ticket/back/methods/sale/specs/payment.spec.js diff --git a/db/changes/10400-christmas/00-ACL.sql b/db/changes/10400-christmas/00-ACL.sql index 45dc56c6bc..4f87cb708c 100644 --- a/db/changes/10400-christmas/00-ACL.sql +++ b/db/changes/10400-christmas/00-ACL.sql @@ -1,2 +1,2 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('Sale','payment','WRITE','ALLOW','ROLE','employee'); + VALUES ('Sale','payBack','WRITE','ALLOW','ROLE','employee'); diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 7b80d7a962..f9fdcef407 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -558,7 +558,7 @@ export default { moreMenuUnmarkReseved: 'vn-item[name="unreserve"]', moreMenuUpdateDiscount: 'vn-item[name="discount"]', moreMenuRecalculatePrice: 'vn-item[name="calculatePrice"]', - moreMenuPayment: 'vn-item[name="payment"]', + moreMenuPayBack: 'vn-item[name="payBack"]', moreMenuUpdateDiscountInput: 'vn-input-number[ng-model="$ctrl.edit.discount"] input', transferQuantityInput: '.vn-popover.shown vn-table > div > vn-tbody > vn-tr > vn-td-editable > span > text', transferQuantityCell: '.vn-popover.shown vn-table > div > vn-tbody > vn-tr > vn-td-editable', diff --git a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js index dfda4dcfb7..1f3aedadf3 100644 --- a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js +++ b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js @@ -206,7 +206,16 @@ describe('Ticket Edit sale path', () => { expect(message.text).toContain('Data saved!'); }); + it('should select the third sale and create a pay back', async() => { + await page.waitToClick(selectors.ticketSales.firstSaleCheckbox); + await page.waitToClick(selectors.ticketSales.moreMenu); + await page.waitToClick(selectors.ticketSales.moreMenuPayBack); + await page.waitForState('ticket.card.sale'); + }); + it('should select the third sale and create a claim of it', async() => { + await page.accessToSearchResult('16'); + await page.accessToSection('ticket.card.sale'); await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox); await page.waitToClick(selectors.ticketSales.moreMenu); await page.waitToClick(selectors.ticketSales.moreMenuCreateClaim); diff --git a/modules/ticket/back/methods/sale/payment.js b/modules/ticket/back/methods/sale/payBack.js similarity index 92% rename from modules/ticket/back/methods/sale/payment.js rename to modules/ticket/back/methods/sale/payBack.js index ab221e4d21..30fcf59f00 100644 --- a/modules/ticket/back/methods/sale/payment.js +++ b/modules/ticket/back/methods/sale/payBack.js @@ -1,5 +1,5 @@ module.exports = Self => { - Self.remoteMethodCtx('payment', { + Self.remoteMethodCtx('payBack', { description: 'Create ticket with the selected lines changing the sign to the quantites', accessType: 'WRITE', accepts: [{ @@ -19,12 +19,12 @@ module.exports = Self => { root: true }, http: { - path: `/payment`, + path: `/payBack`, verb: 'post' } }); - Self.payment = async(ctx, sales, ticketId, options) => { + Self.payBack = async(ctx, sales, ticketId, options) => { const myOptions = {}; let tx; @@ -58,7 +58,6 @@ module.exports = Self => { await Self.rawSql(query, salesIds, myOptions); const [newTicket] = await Self.rawSql('SELECT @newTicket id', null, myOptions); ticketId = newTicket.id; - console.log(ticketId); /* const message = $t('Deleted sales from ticket', { ticketId: ticketId, diff --git a/modules/ticket/back/methods/sale/specs/payment.spec.js b/modules/ticket/back/methods/sale/specs/payment.spec.js new file mode 100644 index 0000000000..9f0bcc98ac --- /dev/null +++ b/modules/ticket/back/methods/sale/specs/payment.spec.js @@ -0,0 +1,26 @@ +const models = require('vn-loopback/server/server').models; + +describe('sale payBack()', () => { + it('should create ticket with the selected lines changing the sign to the quantites', async() => { + const tx = await models.Sale.beginTransaction({}); + const ticketId = 11; + const sales = [ + {id: 7, ticketFk: 11}, + {id: 8, ticketFk: 11} + ]; + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 9}}}; + const response = await models.Sale.payBack(ctx, sales, ticketId, options); + const [newTicketId] = await models.Sale.rawSql('SELECT MAX(t.id) id FROM vn.ticket t;', null, options); + + expect(response).toEqual(newTicketId.id); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 88e1b8308a..9efd660570 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -6,7 +6,7 @@ module.exports = Self => { require('../methods/sale/updateQuantity')(Self); require('../methods/sale/updateConcept')(Self); require('../methods/sale/recalculatePrice')(Self); - require('../methods/sale/payment')(Self); + require('../methods/sale/payBack')(Self); require('../methods/sale/canEdit')(Self); Self.validatesPresenceOf('concept', { diff --git a/modules/ticket/front/sale/index.html b/modules/ticket/front/sale/index.html index 7ca1d47f9e..fe1f5684d0 100644 --- a/modules/ticket/front/sale/index.html +++ b/modules/ticket/front/sale/index.html @@ -491,8 +491,8 @@ Unmark as reserved - Payment + name="payBack" + ng-click="$ctrl.createPayBack()"> + Pay Back \ No newline at end of file diff --git a/modules/ticket/front/sale/index.js b/modules/ticket/front/sale/index.js index 256c72b390..9d0f71eb88 100644 --- a/modules/ticket/front/sale/index.js +++ b/modules/ticket/front/sale/index.js @@ -460,12 +460,12 @@ class Controller extends Section { }); } - createPayment() { + createPayBack() { const sales = this.selectedValidSales(); if (!sales) return; const params = {sales: sales, ticketId: this.ticket.id}; - const query = `Sales/payment`; + const query = `Sales/payBack`; this.resetChanges(); this.$http.post(query, params).then(res => { this.$state.go('ticket.card.sale', {id: res.data}); diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/index.spec.js index 2a0d60fa6e..923fe9157b 100644 --- a/modules/ticket/front/sale/index.spec.js +++ b/modules/ticket/front/sale/index.spec.js @@ -2,7 +2,7 @@ import './index.js'; import watcher from 'core/mocks/watcher'; import crudModel from 'core/mocks/crud-model'; -describe('Ticket', () => { +fdescribe('Ticket', () => { describe('Component vnTicketSale', () => { let controller; let $scope; @@ -701,24 +701,19 @@ describe('Ticket', () => { }); }); - describe('createPayment()', () => { + describe('createPayBack()', () => { it('should make an HTTP POST query and then call to the $state go() method', () => { - jest.spyOn(controller, 'resetChanges').mockReturnThis(); - jest.spyOn(controller.$state, 'go').mockReturnThis(); + jest.spyOn(controller, 'selectedValidSales').mockReturnValue(controller.sales); + jest.spyOn(controller, 'resetChanges'); + jest.spyOn(controller.$state, 'go'); - const ticketId = 13; - const expectedResponse = {id: ticketId}; - const params = { - sales: controller.sales, - ticketId: 13 - }; - - $httpBackend.expect('POST', `Sales/payment`, params).respond(expectedResponse); - controller.createPayment(); + const expectedId = 9999; + $httpBackend.expect('POST', `Sales/payBack`).respond(200, expectedId); + controller.createPayBack(); $httpBackend.flush(); expect(controller.resetChanges).toHaveBeenCalledWith(); - expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.sale', {id: ticketId}); + expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.sale', {id: expectedId}); }); }); diff --git a/modules/ticket/front/sale/locale/es.yml b/modules/ticket/front/sale/locale/es.yml index 734bbdbfd7..e4152600f3 100644 --- a/modules/ticket/front/sale/locale/es.yml +++ b/modules/ticket/front/sale/locale/es.yml @@ -36,4 +36,4 @@ Warehouse: Almacen Agency: Agencia Shipped: F. envio Packaging: Encajado -Payment: Abono \ No newline at end of file +Pay Back: Abono \ No newline at end of file