const app = require('vn-loopback/server/server');

describe('sale moveToTicket()', () => {
    it('should throw an error if the ticket is not editable', async () => {
        let error;

        let params = {actualTicketFk: 10};

        await app.models.Sale.moveToTicket(params)
            .catch(response => {
                expect(response.message).toEqual(`The sales of this ticket can't be modified`);
                error = response;
            });

        expect(error).toBeDefined();
    });

    it('should throw an error if the receiving ticket is not editable', async () => {
        let error;

        let params = {actualTicketFk: 1, newTicketFk: 10};

        await app.models.Sale.moveToTicket(params)
            .catch(response => {
                expect(response.message).toEqual(`The sales of this ticket can't be modified`);
                error = response;
            });

        expect(error).toBeDefined();
    });

    it('should transfer the sales from one ticket to another', async () => {
        let senderTicketSales = await app.models.Ticket.getSales(11);
        let receiverTicketSales = await app.models.Ticket.getSales(13);

        expect(senderTicketSales.length).toEqual(2);
        expect(receiverTicketSales.length).toEqual(0);

        let params = {
            actualTicketFk: 11,
            newTicketFk: 13,
            sales: [
                {id: 7},
                {id: 8}]
        };

        await app.models.Sale.moveToTicket(params);

        senderTicketSales = await app.models.Ticket.getSales(11);
        receiverTicketSales = await app.models.Ticket.getSales(13);

        expect(senderTicketSales.length).toEqual(0);
        expect(receiverTicketSales.length).toEqual(2);
    });

    it('should transfers back the sales', async () => {
        let senderTicketSales = await app.models.Ticket.getSales(13);
        let receiverTicketSales = await app.models.Ticket.getSales(11);

        expect(senderTicketSales.length).toEqual(2);
        expect(receiverTicketSales.length).toEqual(0);

        let params = {
            actualTicketFk: 13,
            newTicketFk: 11,
            sales: [
                {id: 7},
                {id: 8}]
        };

        await app.models.Sale.moveToTicket(params);

        senderTicketSales = await app.models.Ticket.getSales(13);
        receiverTicketSales = await app.models.Ticket.getSales(11);

        expect(senderTicketSales.length).toEqual(0);
        expect(receiverTicketSales.length).toEqual(2);
    });
});