/**
 * i18n PR11 - combobox surfaces.
 *
 * Proves the new country / timezone / phone / subdivision combobox triggers
 * actually render in the create sheets we wired in PR6–8. Doesn't exercise
 * the full data round-trip (covered by integration tests + form-spec
 * coverage); this spec just guards the wiring against regression.
 */

import { test, expect } from '@playwright/test';

import { login, navigateTo, waitForSheet } from './helpers';

test.describe('i18n combobox wiring', () => {
  test.beforeEach(async ({ page }) => {
    await login(page, 'super_admin');
  });

  test('new residential client form exposes phone, country, timezone, subdivision pickers', async ({
    page,
  }) => {
    await navigateTo(page, '/residential/clients');
    await page.locator('main').getByRole('button', { name: /^new$/i }).first().click();
    await waitForSheet(page);

    const sheet = page.locator('[role="dialog"]');
    // PhoneInput renders a flag dropdown + national-format input.
    await expect(sheet.locator('[data-testid="rc-phone-country"]')).toBeVisible();
    // Country / timezone combobox triggers.
    await expect(sheet.locator('[data-testid="rc-nationality"]')).toBeVisible();
    await expect(sheet.locator('[data-testid="rc-timezone"]')).toBeVisible();
    // Country of residence + subdivision (subdivision is disabled until country picked).
    await expect(sheet.locator('[data-testid="rc-residence-country"]')).toBeVisible();
    await expect(sheet.locator('[data-testid="rc-residence-subdivision"]')).toBeVisible();
  });

  test('new client form swaps nationality input for CountryCombobox', async ({ page }) => {
    await navigateTo(page, '/clients');
    // Sheet trigger label varies by tenant - stick to the topbar action.
    await page
      .locator('main')
      .getByRole('button', { name: /^new client$/i })
      .first()
      .click();
    await waitForSheet(page);

    const sheet = page.locator('[role="dialog"]');
    await expect(sheet.locator('[data-testid="client-nationality"]')).toBeVisible();
    await expect(sheet.locator('[data-testid="client-timezone"]')).toBeVisible();
  });

  test('new company form exposes incorporation country + subdivision pickers', async ({ page }) => {
    await navigateTo(page, '/companies');
    await page
      .locator('main')
      .getByRole('button', { name: /^new company$/i })
      .first()
      .click();
    await waitForSheet(page);

    const sheet = page.locator('[role="dialog"]');
    await expect(sheet.locator('[data-testid="company-incorp-country"]')).toBeVisible();
    await expect(sheet.locator('[data-testid="company-incorp-subdivision"]')).toBeVisible();
  });
});
