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

test.beforeEach(async ({ page }) => {
    // Trusted-header login runs automatically when Login mounts.
    // networkidle zaručí, že fetch('/api/data') byl dokončen.
    await page.goto('/');
    await page.waitForLoadState('networkidle');
});

test('zobrazí mock datum 10.01.2025', async ({ page }) => {
    // MOCK_DATA=true pins today to 2025-01-10
    await expect(page.locator('text=10.01')).toBeVisible({ timeout: 10_000 });
});

test('zobrazí čtyři restaurační karty z mock dat', async ({ page }) => {
    // Každá restaurace je obalena v .restaurant-card
    const cards = page.locator('.restaurant-card');
    await expect(cards).toHaveCount(4, { timeout: 10_000 });
});

test('zobrazí alespoň jedno jídlo v menu každé restaurace', async ({ page }) => {
    await expect(page.locator('.restaurant-card').first()).toBeVisible({ timeout: 10_000 });

    // Každá karta musí mít aspoň jeden řádek v .food-table
    const cards = page.locator('.restaurant-card');
    const count = await cards.count();
    for (let i = 0; i < count; i++) {
        const card = cards.nth(i);
        const rows = card.locator('.food-table tr');
        expect(await rows.count()).toBeGreaterThan(0);
    }
});

test('zobrazí volbu stravování před menu', async ({ page }) => {
    // Sekce .choice-section obsahuje select pro výběr stravování
    const choiceSection = page.locator('.choice-section');
    await expect(choiceSection).toBeVisible({ timeout: 10_000 });
    await expect(choiceSection.locator('select').first()).toBeVisible();
});
