const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); describe('sale deleteSales()', () => { beforeAll(async() => { const activeCtx = { accessToken: {userId: 9}, http: { req: { headers: {origin: 'http://localhost'} } } }; spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); }); it('should throw an error if the ticket of the given sales is not editable', async() => { const tx = await models.Sale.beginTransaction({}); let error; try { const options = {transaction: tx}; const ctx = { req: { accessToken: {userId: 9}, headers: {origin: 'localhost:5000'}, __: () => {} } }; const sales = [{id: 1, instance: 0}, {id: 2, instance: 1}]; const ticketId = 2; await models.Sale.deleteSales(ctx, sales, ticketId, options); await tx.rollback(); } catch (e) { await tx.rollback(); error = e; } expect(error).toEqual(new Error(`The sales of this ticket can't be modified`)); }); it('should delete the sale', async() => { const tx = await models.Sale.beginTransaction({}); try { const options = {transaction: tx}; const ctx = { req: { accessToken: {userId: 9}, headers: {origin: 'localhost:5000'}, __: () => {} } }; const sale = await models.Sale.findOne({where: {id: 9}}, options); sale.id = null; const newSale = await models.Sale.create(sale, options); const sales = [{id: newSale.id, instance: 0}]; const ticketId = 16; const deletions = await models.Sale.deleteSales(ctx, sales, ticketId, options); expect(deletions).toEqual([{count: 1}]); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); });