/* @vitest-environment jsdom */ import { render, screen } from '@testing-library/react'; import { expect, test } from 'vitest'; import { PlatformStatGrid } from './PlatformStatGrid'; test('renders platform stat cards with value-first layout', () => { render( , ); const value = screen.getByText('35'); const label = screen.getByText('图案组'); const grid = value.closest('div')?.parentElement?.parentElement; const card = value.parentElement; expect(grid?.className).toContain('grid-cols-3'); expect(grid?.className).toContain('text-center'); expect(card?.className).toContain('bg-white/76'); expect(value.className).toContain('text-lg'); expect(label.className).toContain('tracking-[0.14em]'); }); test('supports label-first plain cards and responsive four-column grid', () => { render( item.label === '总物品数' ? 'total-item-card' : null } />, ); const label = screen.getByText('需要消除'); const value = screen.getByText('12 次'); const grid = label.closest('div')?.parentElement?.parentElement; const totalCard = screen.getByText('总物品数').parentElement; expect(grid?.className).toContain('grid-cols-2'); expect(grid?.className).toContain('sm:grid-cols-4'); expect(label.nextElementSibling).toBe(value); expect(totalCard?.className).toContain('border'); expect(totalCard?.className).toContain('total-item-card'); }); test('supports compact stat chips without labels', () => { render( , ); const chip = screen.getByText('6 个'); const card = chip.parentElement; expect(card?.className).toContain('py-2'); expect(chip.className).toContain('text-sm'); expect(screen.queryByText('状态')).toBeNull(); });