import { test, expect } from '../fixtures/admin.fixture'

/**
 * 工作台/仪表盘测试
 */

test.describe('工作台/仪表盘', () => {
  test('D-01 工作台页面正常加载', async ({ adminPage }) => {
    const page = adminPage

    // 导航到工作台
    await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
    await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })

    // 验证页面容器存在
    await expect(page.locator('.tenant-dashboard')).toBeVisible({ timeout: 10_000 })

    // 验证欢迎横幅可见
    await expect(page.locator('.welcome-banner')).toBeVisible()
  })

  test('D-02 统计卡片数据展示', async ({ adminPage }) => {
    const page = adminPage

    // 导航到工作台
    await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
    await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })

    // 等待统计数据加载
    await expect(page.locator('.stat-card').first()).toBeVisible({ timeout: 10_000 })

    // 验证统计卡片数量（6个：可见活动、进行中、总报名数、待审核报名、总作品数、今日报名）
    const statCards = page.locator('.stat-card')
    const count = await statCards.count()
    expect(count).toBe(6)

    // 验证统计数字存在（非空）
    const statCounts = page.locator('.stat-count')
    for (let i = 0; i < await statCounts.count(); i++) {
      const text = await statCounts.nth(i).textContent()
      expect(text).not.toBeNull()
      expect(text!.trim().length).toBeGreaterThan(0)
    }
  })

  test('D-03 快捷入口可点击', async ({ adminPage }) => {
    const page = adminPage

    // 导航到工作台
    await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
    await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })

    // 等待快捷操作加载
    await expect(page.locator('.action-item').first()).toBeVisible({ timeout: 10_000 })

    // 验证至少有快捷操作按钮
    const actionItems = page.locator('.action-item')
    const count = await actionItems.count()
    expect(count).toBeGreaterThan(0)

    // 点击第一个快捷入口
    await actionItems.first().click()

    // 验证页面跳转（离开工作台）
    await page.waitForURL(/gdlib\/(contests|system)/, { timeout: 10_000 })
  })

  test('D-04 顶部信息栏正确', async ({ adminPage }) => {
    const page = adminPage

    // 导航到工作台
    await page.locator('.ant-menu-item').filter({ hasText: '工作台' }).first().click()
    await page.waitForURL(/dashboard|workbench/, { timeout: 10_000 })

    // 验证欢迎横幅中的用户名
    const welcomeText = await page.locator('.welcome-banner h1').textContent()
    expect(welcomeText).toContain('管理员')

    // 验证日期显示
    await expect(page.locator('.date-text')).toBeVisible()

    // 验证底部用户信息
    await expect(page.locator('.user-info .username')).toBeVisible()
    const username = await page.locator('.user-info .username').textContent()
    expect(username).toBeTruthy()
  })
})
