import { HttpStatusCodes } from 'cypress/support/base';

const blackCarSearchResultSelector = {
  selectCar: 'ta-black-car-card',
  selectCarButton: '[qaid="selectBlackCarButton"]',
  providerFilter: '.black-car-filters [title="Provider"]',
  provider: (provider: string) => `[qaid="${provider}"]`
};

export class BlackCarSearchResults {
  static selectCar(provider: string) {
    cy.allure().logStep('select black car from the search result');
    cy.get(blackCarSearchResultSelector.selectCar)
      .filter(`:contains(${provider})`)
      .eq(0)
      .find(blackCarSearchResultSelector.selectCarButton)
      .click();
    cy.wait('@waitForBlackCarContract').then((Interception) => {
      if (Interception.response?.statusCode !== HttpStatusCodes.Ok) {
        cy.log(`Retrying to find the new car.`);
        cy.get(blackCarSearchResultSelector.selectCarButton).eq(1).click();
      }
    });
  }

  static selectProvider(provider: string) {
    cy.get(blackCarSearchResultSelector.providerFilter).click();
    cy.get(blackCarSearchResultSelector.provider(provider)).click();
  }
}
