import selectors from '../../helpers/selectors.js';
import createNightmare from '../../helpers/nightmare';

// #1528 e2e claim/detail
xdescribe('Route basic Data path', () => {
    const nightmare = createNightmare();

    beforeAll(() => {
        nightmare
            .loginAndModule('delivery', 'route')
            .accessToSearchResult(3)
            .accessToSection('route.card.tickets');
    });

    it('should modify the first ticket priority', async() => {
        const result = await nightmare
            .write(selectors.routeTickets.firstTicketPriority, 2)
            .write('body', '\u000d') // simulates enter
            .waitForLastSnackbar();

        expect(result).toEqual('Data saved!');
    });

    it('should confirm the buscamanButton is disabled', async() => {
        const result = await nightmare
            .evaluate(selector => {
                return document.querySelector(selector);
            }, `${selectors.routeTickets.buscamanButton} :disabled`);

        expect(result).toBeTruthy();
    });

    it('should check the first ticket checkbox and confirm the buscamanButton button is no longer disabled', async() => {
        const result = await nightmare
            .waitToClick(selectors.routeTickets.firstTicketCheckbox)
            .evaluate(selector => {
                return document.querySelector(selector);
            }, `${selectors.routeTickets.buscamanButton} :disabled`);

        expect(result).toBeFalsy();
    });

    it('should check the route volume on the descriptor', async() => {
        const result = await nightmare
            .waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');

        expect(result).toEqual('1.1 / 18 m³');
    });

    it('should count how many tickets are in route', async() => {
        const result = await nightmare
            .countElement('vn-route-tickets vn-textfield[model="ticket.priority"]');

        expect(result).toEqual(11);
    });

    it('should delete the first ticket in route', async() => {
        const result = await nightmare
            .waitToClick(selectors.routeTickets.firstTicketDeleteButton)
            .waitToClick(selectors.routeTickets.confirmButton)
            .waitForLastSnackbar();

        expect(result).toEqual('Ticket removed from route');
    });

    it('should again delete the first ticket in route', async() => {
        const result = await nightmare
            .waitToClick(selectors.routeTickets.firstTicketDeleteButton)
            .waitToClick(selectors.routeTickets.confirmButton)
            .waitForLastSnackbar();

        expect(result).toEqual('Ticket removed from route');
    });

    it('should now count how many tickets are in route to find one less', async() => {
        const result = await nightmare
            .countElement('vn-route-tickets vn-textfield[model="ticket.priority"]');

        expect(result).toEqual(9);
    });

    it('should confirm the route volume on the descriptor has been updated by the changes made', async() => {
        const result = await nightmare
            .waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');

        expect(result).toEqual('0.9 / 18 m³');
    });
});