import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { expect, test } from '@playwright/test';
import { createBrowserWorkspace } from './common';
import { installProActivationRoute } from './pro-license-fixture';

const fixture = path.resolve(
  path.dirname(fileURLToPath(import.meta.url)),
  '../fixtures/interactive-source-project.zip',
);

test('R11 activates Pro once and restores the signed entitlement locally after reload', async ({ page }) => {
  const activation = await installProActivationRoute(page);
  const workspaceName = `latex-r11-${Date.now()}`;
  await createBrowserWorkspace(page, { workspaceName });
  await page.getByLabel('Import Project ZIP').setInputFiles(fixture);
  await page.getByRole('link', { name: /^main\.tex$/ }).click();

  await page.getByRole('button', { name: 'Open Learnitive AI' }).click();
  const ai = page.getByTestId('interactive-ai-overlay');
  await ai.getByRole('button', { name: 'AI settings' }).click();
  await ai.getByRole('button', { name: 'Activate Pro' }).click();
  const dialog = page.getByTestId('interactive-pro-dialog');
  await expect(dialog).toBeVisible();
  await dialog.getByLabel('Licence key').fill('LEARNITIVE-PRO-R11-E2E');
  await dialog.getByRole('button', { name: 'Activate Pro' }).click();
  await expect(dialog.getByText('Learnitive Pro is active')).toBeVisible();
  expect(activation.activations).toBe(1);

  await page.keyboard.press('Escape');
  await page.reload();

  await page.getByRole('button', { name: 'Open Learnitive AI' }).click();
  const restoredAi = page.getByTestId('interactive-ai-overlay');
  await expect(restoredAi).toBeVisible();
  await restoredAi.getByRole('button', { name: 'AI settings' }).click();
  await expect(restoredAi.locator('#interactive-ai-provider option[value="openai"]')).toHaveCount(1);
  await expect(page.getByTestId('interactive-pro-dialog')).toHaveCount(0);
  expect(activation.activations).toBe(1);
});
