import { test, expect } from '@playwright/test';
import { importUserFromAccount, getTestUserData } from './testUtils';
import { NOTIFY_DUPLICATE_ACCOUNT_IMPORT } from '../src/constants/notifications';

/**
 * Test duplicate account import functionality
 * 
 * This test verifies that:
 * 1. A user can successfully import an account the first time
 * 2. Attempting to import the same account again shows a warning message
 * 3. The duplicate import is prevented
 */
test.describe('Duplicate Account Import', () => {
  test('should prevent importing the same account twice', async ({ page }) => {
    const userData = getTestUserData("00");
    
    // First import - should succeed
    await page.goto("./start");
    await page.getByText("You have a seed").click();
    await page.getByPlaceholder("Seed Phrase").fill(userData.seedPhrase);
    await page.getByRole("button", { name: "Import" }).click();
    
    // Verify first import was successful
    await expect(page.getByRole("code")).toContainText(userData.did);
    
    // Navigate back to start page for second import attempt
    await page.goto("./start");
    await page.getByText("You have a seed").click();
    await page.getByPlaceholder("Seed Phrase").fill(userData.seedPhrase);
    await page.getByRole("button", { name: "Import" }).click();
    
    // Verify duplicate import shows warning message
    // The warning can appear either from the pre-check or from the saveNewIdentity error handling
    await expect(page.getByText(NOTIFY_DUPLICATE_ACCOUNT_IMPORT.message)).toBeVisible();
    
    // Verify we're still on the import page (not redirected to account)
    await expect(page.getByPlaceholder("Seed Phrase")).toBeVisible();
  });

  test('should allow importing different accounts', async ({ page }) => {
    const userZeroData = getTestUserData("00");
    const userOneData = getTestUserData("01");
    
    // Import first user
    await page.goto("./start");
    await page.getByText("You have a seed").click();
    await page.getByPlaceholder("Seed Phrase").fill(userZeroData.seedPhrase);
    await page.getByRole("button", { name: "Import" }).click();
    
    // Verify first import was successful
    await expect(page.getByRole("code")).toContainText(userZeroData.did);
    
    // Navigate back to start page for second user import
    await page.goto("./start");
    await page.getByText("You have a seed").click();
    await page.getByPlaceholder("Seed Phrase").fill(userOneData.seedPhrase);
    await page.getByRole("button", { name: "Import" }).click();
    
    // Verify second import was successful (should not show duplicate warning)
    await expect(page.getByRole("code")).toContainText(userOneData.did);
    await expect(page.getByText(NOTIFY_DUPLICATE_ACCOUNT_IMPORT.message)).not.toBeVisible();
  });
});
