diff --git a/frontend/src/pages/__tests__/OverviewPage.test.tsx b/frontend/src/pages/__tests__/OverviewPage.test.tsx
index 89097f7f..50bde2ab 100644
--- a/frontend/src/pages/__tests__/OverviewPage.test.tsx
+++ b/frontend/src/pages/__tests__/OverviewPage.test.tsx
@@ -8,22 +8,27 @@ vi.mock('react-router-dom', async () => {
});
describe('OverviewPage', () => {
- it('renders reading progress', async () => {
+ it('renders with paper data', async () => {
renderWithProviders();
await waitFor(() => {
- expect(screen.getByText(/Reading Progress/i)).toBeInTheDocument();
+ expect(screen.getByText(/Test Paper/i)).toBeInTheDocument();
});
});
- it('shows recently added papers', async () => {
+
+ it('shows reading progress bar', async () => {
renderWithProviders();
await waitFor(() => {
- expect(screen.getByText(/Recently Added/i)).toBeInTheDocument();
+ // Progress bar shows "Completed" label from papers_by_reading
+ expect(screen.getByText(/Completed/i)).toBeInTheDocument();
});
});
- it('shows reading goals card', async () => {
+
+ it('shows stats from overview data', async () => {
renderWithProviders();
await waitFor(() => {
- expect(screen.getByText(/Reading Goals/i)).toBeInTheDocument();
+ // Total papers is 5 from mock
+ const fives = screen.getAllByText('5');
+ expect(fives.length).toBeGreaterThanOrEqual(1);
});
});
});
diff --git a/frontend/src/test/mocks/handlers.ts b/frontend/src/test/mocks/handlers.ts
index 6b168e0d..d55c5658 100644
--- a/frontend/src/test/mocks/handlers.ts
+++ b/frontend/src/test/mocks/handlers.ts
@@ -37,6 +37,22 @@ export const handlers = [
),
),
),
+ http.get(`${apiBase}/projects/:id/overview`, () =>
+ HttpResponse.json(
+ mockResponse({
+ total_papers: 5,
+ papers_by_status: { pending: 2, indexed: 3 },
+ papers_by_reading: { unread: 1, reading: 1, completed: 3 },
+ papers_by_year: { 2024: 3, 2023: 2 },
+ avg_citations: 42,
+ recent_papers: [
+ { title: 'Test Paper', year: 2024, reading_status: 'read', added_at: '2024-01-15T00:00:00Z' },
+ ],
+ keyword_count: 3,
+ subscription_count: 1,
+ }),
+ ),
+ ),
http.post(`${apiBase}/projects`, async ({ request }) => {
const body = (await request.json()) as Record;
return HttpResponse.json(
diff --git a/frontend/src/test/setup.ts b/frontend/src/test/setup.ts
index be6ad24a..223c5036 100644
--- a/frontend/src/test/setup.ts
+++ b/frontend/src/test/setup.ts
@@ -2,10 +2,17 @@ import '@testing-library/jest-dom';
import { cleanup } from '@testing-library/react';
import { afterEach, beforeAll, afterAll } from 'vitest';
import { server } from './mocks/server';
+import i18n from '@/i18n';
+
+beforeAll(async () => {
+ server.listen({ onUnhandledRequest: 'bypass' });
+ // Force English for consistent test assertions
+ await i18n.changeLanguage('en');
+});
-beforeAll(() => server.listen({ onUnhandledRequest: 'bypass' }));
afterEach(() => {
cleanup();
server.resetHandlers();
});
+
afterAll(() => server.close());