/// <reference types="cypress" />
describe('OrderCatalog', () => {
    beforeEach(() => {
        cy.login('developer');
        cy.viewport(1920, 720);
        cy.visit('/#/order/8/catalog');
    });

    const checkCustomFilterTag = (filterName = 'Plant') => {
        cy.dataCy('catalogFilterCustomTag').should('exist');
        cy.dataCy('catalogFilterCustomTag').contains(filterName);
    };

    const searchByCustomTagInput = (option) => {
        cy.dataCy('catalogFilterValueInput').find('input').last().focus();
        cy.dataCy('catalogFilterValueInput').find('input').last().type(option);
        cy.dataCy('catalogFilterValueInput').find('input').last().type('{enter}');
        checkCustomFilterTag(option);
    };

    it('Shows empty state', () => {
        cy.dataCy('orderCatalogPage').should('exist');
        cy.dataCy('orderCatalogPage').contains('No data to display');
    });

    it('filter by category and type', () => {
        cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
        cy.selectOption('[data-cy="catalogFilterType"]', 'Anthurium');
        cy.dataCy('orderCatalogItem').should('exist');
    });

    it('filters by custom value select', () => {
        cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
        searchByCustomTagInput('Silver');
    });

    it('filters by custom value dialog', () => {
        Cypress.on('uncaught:exception', (err) => {
            if (err.message.includes('canceled')) {
                return false;
            }
        });
        cy.get(
            '[data-cy="vn-searchbar"] > .q-field > .q-field__inner > .q-field__control',
        ).type('{enter}');
        cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
        cy.dataCy('catalogFilterValueDialogBtn').last().click();
        cy.selectOption("[data-cy='catalogFilterValueDialogTagSelect']", 'Tallos');
        cy.dataCy('catalogFilterValueDialogValueInput').find('input').focus();
        cy.dataCy('catalogFilterValueDialogValueInput').find('input').type('2');
        cy.dataCy('catalogFilterValueDialogValueInput').find('input').type('{enter}');
        checkCustomFilterTag('2');
    });

    it('removes a secondary tag', () => {
        cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
        cy.selectOption('[data-cy="catalogFilterType"]', 'Anthurium');
        cy.dataCy('vnFilterPanelChip').should('exist');
        cy.get('[data-cy="catalogFilterCustomTag"] > .q-chip__icon--remove').click();
        cy.dataCy('vnFilterPanelChip').should('not.exist');
    });

    it('Removes category tag', () => {
        cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
        cy.get('.q-chip__icon--remove').click();
        cy.dataCy('catalogFilterCustomTag').should('not.exist');
    });
});