/// <reference types="cypress" />

describe('Personalization Flow', () => {
  beforeEach(() => {
    // Логинимся перед каждым тестом
    cy.login();
  });

  it('should complete personalization flow and open link in new tab', () => {
    // Ищем нужный квиз и нажимаем редактировать
    cy.contains('Сочетание перестановки и размещения')
      .parent()
      .parent()
      .contains('Редактировать')
      .click();

    // Переходим на вкладку персонализации
    cy.contains('Персонализация').click();

    // Ждем загрузки данных
    cy.get('.MuiSkeleton-root', { timeout: 30000 }).should('not.exist');
    cy.wait(6000);

    // Удаляем все существующие ссылки
    cy.get('body').then(($body) => {
      if ($body.find('.delete_aud').length > 0) {
        // Пока есть кнопки удаления - удаляем ссылки
        const deleteLinks = () => {
          // Находим первую кнопку удаления и кликаем по ней
          cy.get('.delete_aud').first().click();
          // Подтверждаем удаление
          cy.get('#delete_OK').click();
          // Проверяем, остались ли еще кнопки удаления
          cy.get('body').then(($body) => {
            if ($body.find('.delete_aud').length > 0) {
              deleteLinks();
            }
          });
        };
        deleteLinks();
      }
    });

    // Выбираем пол (М)
    cy.contains('М').click();

    // Генерируем случайный возраст от 1 до 99
    const randomAge = Math.floor(Math.random() * 99) + 1;
    
    // Вводим возраст
    cy.get('input[placeholder="Введите возраст"]')
      .type(randomAge.toString())
      .should('have.value', randomAge.toString());

    // Нажимаем кнопку Ок
    cy.contains('Ок').click();

    // Ждем появления ссылки и получаем её текст
    cy.get('.link', { timeout: 30000 })
      .should('be.visible')
      .invoke('text')
      .then((text) => {
        // Исправляем домен в ссылке
        const url = new URL(text);
        url.hostname = 's.hbpn.link';
        const correctUrl = url.toString();
        
        // Переходим на страницу по исправленной ссылке
        cy.visit(correctUrl);
        
        // Проверяем содержимое страницы
        cy.contains('Сочетание перестановки и размещения').should('exist');
      });
  });
});
