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

import { test, expect } from '@playwright/test';
import { RegisterPage } from '../../../page-objects/RegisterPage';
import {
  generateFirstName,
  generateLastName,
  generateMiddleName,
  generateLogin,
  generatePhone,
  generateKPP,
  generateINN,
  generateShortOrgName,
  generateFullOrgName
} 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 surname = generateLastName();
  const name = generateFirstName();
  const patronymic = generateMiddleName();
  const directorFIO = `${surname} ${name} ${patronymic}`;
  const login = generateLogin();
  const phone = generatePhone();
  const password = '!Test123456';
  const shortName = generateShortOrgName();
  const fullName = generateFullOrgName();
  const address = 'г. Таганрог, ул. Тестовая, д. 1';
  const kpp = generateKPP();
  const inn = generateINN();
  const site = 'https://test-org.ru';
  const description = 'Абсолютно неуникальное тестовое описание';
  const position = 'Генеральный директор';
  const basis = 'закона';
  const tg = 'https://t.me/test_user';
  const vk = 'https://vk.com/test_user';

  await registerPage.goto();
  await registerPage.selectRole('Организация');

  //Первый этап регистраци
  await registerPage.fillLogin(login);
  await registerPage.fillEmail(email);
  await registerPage.fillPassword(password);
  await registerPage.fillPasswordRepeat(password);
  await registerPage.clickNextButton();

  //Второй этап регистрации
  await registerPage.fillShortName(shortName);
  await registerPage.fillFullName(fullName);
  await registerPage.fillAddress(address);
  await registerPage.fillKPP(kpp);
  await registerPage.fillINN(inn);
  await registerPage.fillSite(site);
  await registerPage.fillPhone(phone);
  await registerPage.fillDescription(description);
  await registerPage.clickNextButtonOrg();

  //Третий этап регистрации
  await registerPage.fillDirectorFIO(directorFIO);
  await registerPage.fillPosition(position);
  await registerPage.fillBasis(basis);
  await registerPage.fillTelegram(tg);
  await registerPage.fillVK(vk);
  await registerPage.checkConsentCheckbox();
  await registerPage.submitGeneral();

  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 registerPage.expectSuccessModal();

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

});
