//  Позитивный тест регистрации абитуриента
//  Включает в себя:
//  Ввод валидных тестовых данных
//  Получение кода в письме
//  Ввод кода из письма (is_confirm)
//  Переход на главную

import { test, expect } from '@playwright/test';
import { RegisterPage } from '../../../page-objects/RegisterPage';
import {
  generateFirstName,
  generateLastName,
  generateMiddleName,
  generateLogin,
  generatePhone,
} from '../../../utils/userGenerator';
import {
  createTempEmail,
  waitForConfirmationCode
} from '../../../utils/mailTmApi';

test('Полная регистрация абитуриента с подтверждением почты', async ({ page }) => {
  await new Promise(r => setTimeout(r, 3000));
  const registerPage = new RegisterPage(page);

  const { email, token } = await createTempEmail();

  const firstName = generateFirstName();
  const lastName = generateLastName();
  const middleName = generateMiddleName();
  const login = generateLogin();
  const phone = generatePhone();
  const password = '!Test123456';

  await registerPage.goto();
  await registerPage.fillLastName(lastName);
  await registerPage.fillFirstName(firstName);
  await registerPage.fillMiddleName(middleName);
  await registerPage.fillEmail(email);
  await registerPage.fillLogin(login);
  await registerPage.fillPhone(phone);
  await registerPage.fillPassword(password);
  await registerPage.fillPasswordRepeat(password);
  await registerPage.checkConsentCheckbox();
  await registerPage.submit();

  await expect(page).toHaveURL(/confirmation-code/);
  const code = await waitForConfirmationCode(email, token, 'register', 60000);

  await page.fill('input[name="code"]', code);
  await page.click('button.RecoverPassword_button__5QDxM');

  await expect(page).toHaveURL('https://rumc.dev.rdcenter.ru');

});
