import { test, expect } from '@playwright/test';
import axios from 'axios';
import {
  createTempEmail,
  waitForConfirmationCode
} from '../../../utils/mailTmApi';
import {
  generateFirstName,
  generateLastName,
  generateMiddleName,
  generateLogin,
  generatePhone,
  generateKPP,
  generateINN,
  generateShortOrgName,
  generateFullOrgName
} from '../../../utils/userGenerator';

const BASE_URL = 'https://rumc.dev.rdcenter.ru/api';

test('API: регистрация организации + подтверждение почты', async () => {
  await new Promise(r => setTimeout(r, 3000));
  const { email, token: mailToken } = await createTempEmail();

  const surname = generateLastName();
  const name = generateFirstName();
  const patronymic = generateMiddleName();
  const representativeName = `${surname} ${name} ${patronymic}`;
  const login = generateLogin();
  const phone = '+7 (900) 000-00-00';
  const password = '!Test123456';
  const shortName = generateShortOrgName();
  const fullName = generateFullOrgName();
  const kpp = generateKPP();
  const inn = generateINN();
  
  const registerPayload = {
    shortName,
    fullName,
    description: "Абсолютно неуникальное тестовое описание",
    website: "https://test-org.ru",
    address: "г. Таганрог, ул. Тестовая, д. 1",
    inn,
    kpp,
    representativeName,
    position: "Генеральный директор",
    phone,
    basis: "федерального закона",
    email,
    password,
    login,
    socialLinks: {
        tg: "https://t.me/test_user",
        vk: "https://vk.com/test_user"
  }};

  try {
  const registerRes = await axios.post(`${BASE_URL}/auth/register/organization`, registerPayload);
  expect(registerRes.status).toBe(200);

  const userId = registerRes.data.userId;
  console.log('🆔 ID зарегистрированного пользователя:', userId);

} catch (error: any) {
  console.error('❌ Ошибка регистрации:', error.response?.data || error.message);
  throw error;
}

  console.log('📬 Ожидание письма с кодом подтверждения...');
  const code = await waitForConfirmationCode(email, mailToken, 'register',60000);
  console.log('✅ Код получен:', code);

  const confirmPayload = {
    email,
    code
  };

  const confirmRes = await axios.post(`${BASE_URL}/auth/confirm`, confirmPayload);
  expect(confirmRes.status).toBe(200); 

  console.log('🎉 Почта подтверждена успешно');
});
