import { test, expect } from '@playwright/test';
import { importUser, createUniqueStringsArray } from './testUtils';

test('Create 10 new projects', async ({ page }) => {
  const projectCount = 10;

  // Standard texts
  const standardTitle = "Idea ";
  const standardDescription = "Description of Idea ";
  const standardWebsite = 'https://example.com';

  // Title and description arrays
  const finalTitles = [];
  const finalDescriptions = [];

  // Create an array of unique strings
  const uniqueStrings = await createUniqueStringsArray(projectCount);

  // Populate arrays with titles and descriptions
  for (let i = 0; i < projectCount; i++) {
    let loopTitle = standardTitle + uniqueStrings[i];
    finalTitles.push(loopTitle);
    let loopDescription = standardDescription + uniqueStrings[i];
    finalDescriptions.push(loopDescription);
  }

  // Set date
  const today = new Date();
  const oneMonthAhead = new Date(today.setDate(today.getDate() + 30));
  const standardDate = oneMonthAhead.toISOString().split('T')[0];

  // Set time
  const now = new Date();
  const futureTime = new Date(now.setHours(now.getHours() + 1));
  const standardHour = futureTime.getHours().toString().padStart(2, '0');
  const standardMinute = futureTime.getMinutes().toString().padStart(2, '0');
  const standardTime = `${standardHour}:${standardMinute}`;

  // Import user 00
  await importUser(page, '00');

  // Create new projects
  for (let i = 0; i < projectCount; i++) {
    await page.goto('./projects');
    if (i === 0) {
      // close onboarding, but not with a click to go to the main screen
      await page.locator('div > svg.fa-xmark').click();
    }
    await page.locator('button > svg.fa-plus').click();
    await page.getByPlaceholder('Idea Name').fill(finalTitles[i]); // Add random suffix
    await page.getByPlaceholder('Description').fill(finalDescriptions[i]);
    await page.getByPlaceholder('Website').fill(standardWebsite);
    await page.getByPlaceholder('Start Date').fill(standardDate);
    await page.getByPlaceholder('Start Time').fill(standardTime);
    await page.getByRole('button', { name: 'Save Project' }).click();

    // Check texts
    await expect(page.locator('h2')).toContainText(finalTitles[i]);
    await expect(page.locator('#Content')).toContainText(finalDescriptions[i]);
  }
});