/// <reference types="cypress" />
describe('TicketList', () => {
    const firstRow = 'tbody > :nth-child(1)';

    beforeEach(() => {
        cy.login('developer');
        cy.viewport(1920, 1080);
        cy.visit('/#/ticket/list');
    });

    const searchResults = (search) => {
        cy.dataCy('vnSearchBar').find('input').focus();
        if (search) cy.dataCy('vnSearchBar').find('input').type(search);
        cy.dataCy('vnSearchBar').find('input').type('{enter}');
        cy.dataCy('ticketListTable').should('exist');
        cy.get(firstRow).should('exist');
    };

    it('should search results', () => {
        cy.dataCy('ticketListTable').should('not.exist');
        cy.get('.q-field__control').should('exist');
        searchResults();
    });

    it('should open ticket sales', () => {
        searchResults();
        cy.window().then((win) => {
            cy.stub(win, 'open').as('windowOpen');
        });
        cy.get(firstRow).find('.q-btn:first').click();
        cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/);
    });

    it('should open ticket summary', () => {
        searchResults();
        cy.get(firstRow).find('.q-btn:last').click();
        cy.dataCy('ticketSummary').should('exist');
    });

    it('Client list create new client', () => {
        cy.dataCy('vnTableCreateBtn').should('exist');
        cy.dataCy('vnTableCreateBtn').click();
        const data = {
            Customer: { val: 1, type: 'select' },
            Warehouse: { val: 'Warehouse One', type: 'select' },
            Address: { val: 'employee', type: 'select' },
            Landed: { val: '01-01-2024', type: 'date' },
        };
        cy.fillInForm(data);
        cy.dataCy('Agency_select').click();
        cy.dataCy('FormModelPopup_save').click();
        cy.checkNotification('Data created');
        cy.url().should('match', /\/ticket\/\d+\/summary/);
    });
});
