diff --git a/modules/claim/back/methods/claim/specs/createFromSales.spec.js b/modules/claim/back/methods/claim/specs/createFromSales.spec.js index 849ccf8f5..8a48b8613 100644 --- a/modules/claim/back/methods/claim/specs/createFromSales.spec.js +++ b/modules/claim/back/methods/claim/specs/createFromSales.spec.js @@ -1,31 +1,40 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('Claim createFromSales()', () => { - const ticketId = 2; + const ticketId = 16; const newSale = [{ id: 3, instance: 0, quantity: 10 }]; - const ctx = { - req: { - accessToken: {userId: 1}, - headers: {origin: 'localhost:5000'}, - __: () => {} - } + const activeCtx = { + accessToken: {userId: 1}, + headers: {origin: 'localhost:5000'}, + __: () => {} }; + const ctx = { + req: activeCtx + }; + + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + it('should create a new claim', async() => { - const tx = await app.models.Claim.beginTransaction({}); + const tx = await models.Claim.beginTransaction({}); try { const options = {transaction: tx}; - const claim = await app.models.Claim.createFromSales(ctx, ticketId, newSale, options); + const claim = await models.Claim.createFromSales(ctx, ticketId, newSale, options); expect(claim.ticketFk).toEqual(ticketId); - let claimBeginning = await app.models.ClaimBeginning.findOne({where: {claimFk: claim.id}}, options); + let claimBeginning = await models.ClaimBeginning.findOne({where: {claimFk: claim.id}}, options); expect(claimBeginning.saleFk).toEqual(newSale[0].id); expect(claimBeginning.quantity).toEqual(newSale[0].quantity); @@ -37,17 +46,42 @@ describe('Claim createFromSales()', () => { } }); - it('should not be able to create a claim if exists that sale', async() => { - const tx = await app.models.Claim.beginTransaction({}); + it('should not be able to create a claim for a ticket delivered more than seven days ago', async() => { + const tx = await models.Claim.beginTransaction({}); let error; try { const options = {transaction: tx}; - await app.models.Claim.createFromSales(ctx, ticketId, newSale, options); + const todayMinusEightDays = new Date(); + todayMinusEightDays.setDate(todayMinusEightDays.getDate() - 8); - await app.models.Claim.createFromSales(ctx, ticketId, newSale, options); + const ticket = await models.Ticket.findById(ticketId, options); + await ticket.updateAttribute('landed', todayMinusEightDays, options); + + await models.Claim.createFromSales(ctx, ticketId, newSale, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error.toString()).toContain(`You can't create a claim from a ticket delivered more than seven days ago`); + }); + + it('should not be able to create a claim if exists that sale', async() => { + const tx = await models.Claim.beginTransaction({}); + + let error; + + try { + const options = {transaction: tx}; + + await models.Claim.createFromSales(ctx, ticketId, newSale, options); + + await models.Claim.createFromSales(ctx, ticketId, newSale, options); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/index.spec.js index cee1fe5b4..d543c1b81 100644 --- a/modules/ticket/front/sale/index.spec.js +++ b/modules/ticket/front/sale/index.spec.js @@ -15,7 +15,8 @@ describe('Ticket', () => { const ticket = { id: 1, clientFk: 1101, - shipped: 1, + shipped: new Date(), + landed: new Date(), created: new Date(), client: {salesPersonFk: 1}, address: {mobile: 111111111} @@ -74,6 +75,25 @@ describe('Ticket', () => { }); }); + describe('isClaimable() getter', () => { + it('should return true for a ticket delivered less than seven days ago', () => { + const result = controller.isClaimable; + + expect(result).toEqual(true); + }); + + it('should return false for a ticket delivered more than seven days ago', () => { + const ticket = controller.ticket; + const landedMinusEightDays = new Date(ticket.landed); + landedMinusEightDays.setDate(landedMinusEightDays.getDate() - 8); + ticket.landed = landedMinusEightDays; + + const result = controller.isClaimable; + + expect(result).toEqual(false); + }); + }); + describe('getSaleTotal()', () => { it('should return the sale total amount', () => { const sale = {