diff --git a/frontend/tests/app/admin/page.test.tsx b/frontend/tests/app/admin/page.test.tsx
index d2ae918..926ba77 100644
--- a/frontend/tests/app/admin/page.test.tsx
+++ b/frontend/tests/app/admin/page.test.tsx
@@ -32,8 +32,8 @@ jest.mock('@/components/charts', () => ({
OrganizationDistributionChart: () => (
Org Distribution Chart
),
- SessionActivityChart: () => (
- Session Activity Chart
+ RegistrationActivityChart: () => (
+ Registration Activity Chart
),
UserStatusChart: () => User Status Chart
,
}));
@@ -141,7 +141,7 @@ describe('AdminPage', () => {
expect(screen.getByTestId('user-growth-chart')).toBeInTheDocument();
expect(screen.getByTestId('org-distribution-chart')).toBeInTheDocument();
- expect(screen.getByTestId('session-activity-chart')).toBeInTheDocument();
+ expect(screen.getByTestId('registration-activity-chart')).toBeInTheDocument();
expect(screen.getByTestId('user-status-chart')).toBeInTheDocument();
});
});
diff --git a/frontend/tests/components/charts/OrganizationDistributionChart.test.tsx b/frontend/tests/components/charts/OrganizationDistributionChart.test.tsx
index 01f5d90..9467a68 100644
--- a/frontend/tests/components/charts/OrganizationDistributionChart.test.tsx
+++ b/frontend/tests/components/charts/OrganizationDistributionChart.test.tsx
@@ -41,7 +41,7 @@ describe('OrganizationDistributionChart', () => {
render();
expect(screen.getByText('Organization Distribution')).toBeInTheDocument();
- expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ expect(screen.getByText('No organization data available')).toBeInTheDocument();
});
it('shows loading state', () => {
@@ -67,6 +67,6 @@ describe('OrganizationDistributionChart', () => {
render();
expect(screen.getByText('Organization Distribution')).toBeInTheDocument();
- expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ expect(screen.getByText('No organization data available')).toBeInTheDocument();
});
});
diff --git a/frontend/tests/components/charts/RegistrationActivityChart.test.tsx b/frontend/tests/components/charts/RegistrationActivityChart.test.tsx
new file mode 100644
index 0000000..12a6c34
--- /dev/null
+++ b/frontend/tests/components/charts/RegistrationActivityChart.test.tsx
@@ -0,0 +1,87 @@
+/**
+ * Tests for RegistrationActivityChart Component
+ */
+
+import { render, screen } from '@testing-library/react';
+import { RegistrationActivityChart } from '@/components/charts/RegistrationActivityChart';
+import type { RegistrationActivityData } from '@/components/charts/RegistrationActivityChart';
+
+// Mock recharts to avoid rendering issues in tests
+jest.mock('recharts', () => {
+ const OriginalModule = jest.requireActual('recharts');
+ return {
+ ...OriginalModule,
+ ResponsiveContainer: ({ children }: { children: React.ReactNode }) => (
+ {children}
+ ),
+ };
+});
+
+describe('RegistrationActivityChart', () => {
+ const mockData: RegistrationActivityData[] = [
+ { date: 'Jan 1', registrations: 5 },
+ { date: 'Jan 2', registrations: 8 },
+ { date: 'Jan 3', registrations: 3 },
+ ];
+
+ it('renders chart card with title and description', () => {
+ render();
+
+ expect(screen.getByText('User Registration Activity')).toBeInTheDocument();
+ expect(screen.getByText('New user registrations over the last 14 days')).toBeInTheDocument();
+ });
+
+ it('renders chart with provided data', () => {
+ render();
+
+ expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ });
+
+ it('shows empty state when no data is provided', () => {
+ render();
+
+ expect(screen.getByText('User Registration Activity')).toBeInTheDocument();
+ expect(screen.getByText('No registration data available')).toBeInTheDocument();
+ expect(screen.queryByTestId('responsive-container')).not.toBeInTheDocument();
+ });
+
+ it('shows empty state when data array is empty', () => {
+ render();
+
+ expect(screen.getByText('User Registration Activity')).toBeInTheDocument();
+ expect(screen.getByText('No registration data available')).toBeInTheDocument();
+ expect(screen.queryByTestId('responsive-container')).not.toBeInTheDocument();
+ });
+
+ it('shows empty state when data has no registrations', () => {
+ const emptyData = [
+ { date: 'Jan 1', registrations: 0 },
+ { date: 'Jan 2', registrations: 0 },
+ ];
+ render();
+
+ expect(screen.getByText('User Registration Activity')).toBeInTheDocument();
+ expect(screen.getByText('No registration data available')).toBeInTheDocument();
+ expect(screen.queryByTestId('responsive-container')).not.toBeInTheDocument();
+ });
+
+ it('shows loading state', () => {
+ render();
+
+ expect(screen.getByText('User Registration Activity')).toBeInTheDocument();
+
+ // Chart should not be visible when loading
+ expect(screen.queryByTestId('responsive-container')).not.toBeInTheDocument();
+ expect(screen.queryByText('No registration data available')).not.toBeInTheDocument();
+ });
+
+ it('shows error state', () => {
+ render();
+
+ expect(screen.getByText('User Registration Activity')).toBeInTheDocument();
+ expect(screen.getByText('Failed to load chart data')).toBeInTheDocument();
+
+ // Chart should not be visible when error
+ expect(screen.queryByTestId('responsive-container')).not.toBeInTheDocument();
+ });
+});
diff --git a/frontend/tests/components/charts/UserGrowthChart.test.tsx b/frontend/tests/components/charts/UserGrowthChart.test.tsx
index ee10532..ac44f94 100644
--- a/frontend/tests/components/charts/UserGrowthChart.test.tsx
+++ b/frontend/tests/components/charts/UserGrowthChart.test.tsx
@@ -41,7 +41,7 @@ describe('UserGrowthChart', () => {
render();
expect(screen.getByText('User Growth')).toBeInTheDocument();
- expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ expect(screen.getByText('No user growth data available')).toBeInTheDocument();
});
it('shows loading state', () => {
@@ -67,6 +67,6 @@ describe('UserGrowthChart', () => {
render();
expect(screen.getByText('User Growth')).toBeInTheDocument();
- expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ expect(screen.getByText('No user growth data available')).toBeInTheDocument();
});
});
diff --git a/frontend/tests/components/charts/UserStatusChart.test.tsx b/frontend/tests/components/charts/UserStatusChart.test.tsx
index aabf855..8583890 100644
--- a/frontend/tests/components/charts/UserStatusChart.test.tsx
+++ b/frontend/tests/components/charts/UserStatusChart.test.tsx
@@ -60,7 +60,7 @@ describe('UserStatusChart', () => {
render();
expect(screen.getByText('User Status Distribution')).toBeInTheDocument();
- expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ expect(screen.getByText('No user status data available')).toBeInTheDocument();
});
it('shows loading state', () => {
@@ -86,7 +86,7 @@ describe('UserStatusChart', () => {
render();
expect(screen.getByText('User Status Distribution')).toBeInTheDocument();
- expect(screen.getByTestId('responsive-container')).toBeInTheDocument();
+ expect(screen.getByText('No user status data available')).toBeInTheDocument();
});
describe('renderLabel function', () => {