import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { KpiCard } from '../kpi-card'; describe('KpiCard', () => { it('renders label', () => { render(); expect(screen.getByText('Giá TB')).toBeInTheDocument(); }); it('renders value', () => { render(); expect(screen.getByText('100')).toBeInTheDocument(); }); it('renders footnote', () => { render(); expect(screen.getByText('Hôm nay')).toBeInTheDocument(); }); it('renders PriceDelta when delta provided', () => { render(); expect(screen.getByText('+1.50%')).toBeInTheDocument(); }); it('renders icon', () => { render(} />); expect(screen.getByTestId('icon')).toBeInTheDocument(); }); it('renders loading skeleton when loading=true', () => { const { container } = render(); expect(container.querySelector('[aria-busy]')).toBeInTheDocument(); expect(container.querySelector('.animate-pulse')).toBeInTheDocument(); }); it('does not show value when loading', () => { render(); expect(screen.queryByText('100')).toBeNull(); }); it('merges custom className', () => { render(); expect(screen.getByTestId('kc')).toHaveClass('extra'); }); });