import type { ReactNode } from 'react';
import { describe, expect, it, vi } from 'vitest';
import { render, screen } from '@testing-library/react';
import { UsageTrendChart } from '@/components/analytics/usage-trend-chart';
import { AllProviders } from '@tests/setup/test-utils';
vi.mock('recharts', () => ({
ResponsiveContainer: ({ children }: { children: ReactNode }) =>
{children}
,
AreaChart: ({ children }: { children: ReactNode }) => {children}
,
Area: () => null,
CartesianGrid: () => null,
XAxis: () => null,
YAxis: () => null,
Tooltip: ({ content }: { content: (args: unknown) => ReactNode }) => (
{content({
active: true,
label: '14:00',
payload: [
{
name: 'Tokens',
value: 1_200,
color: '#0080FF',
payload: { requests: 4 },
},
{
name: 'Cost',
value: 1.5,
color: '#00C49F',
payload: { requests: 4 },
},
],
})}
),
defs: ({ children }: { children: ReactNode }) => <>{children}>,
linearGradient: ({ children }: { children: ReactNode }) => <>{children}>,
stop: () => null,
}));
describe('UsageTrendChart', () => {
it('does not overclaim hourly request semantics in the tooltip', () => {
render(
,
{ wrapper: AllProviders }
);
expect(screen.getByText('Tokens: 1.2K')).toBeInTheDocument();
expect(screen.getByText('Cost: $1.5')).toBeInTheDocument();
expect(screen.queryByText(/Requests:/)).not.toBeInTheDocument();
});
});