diff --git a/frontend/tests/app/admin/organizations/page.test.tsx b/frontend/tests/app/admin/organizations/page.test.tsx
index 1cb2d79..2ba0060 100644
--- a/frontend/tests/app/admin/organizations/page.test.tsx
+++ b/frontend/tests/app/admin/organizations/page.test.tsx
@@ -1,59 +1,17 @@
/**
* Tests for Admin Organizations Page
- * Verifies rendering of organization management placeholder
+ * Basic structural tests - full component testing in E2E tests
*/
import { render, screen } from '@testing-library/react';
import AdminOrganizationsPage from '@/app/admin/organizations/page';
+// Mock the entire OrganizationManagementContent component
+jest.mock('@/components/admin/organizations/OrganizationManagementContent', () => ({
+ OrganizationManagementContent: () =>
Organization Management
,
+}));
+
describe('AdminOrganizationsPage', () => {
- it('renders page title', () => {
- render();
-
- expect(screen.getByText('Organizations')).toBeInTheDocument();
- });
-
- it('renders page description', () => {
- render();
-
- expect(
- screen.getByText('Manage organizations and their members')
- ).toBeInTheDocument();
- });
-
- it('renders back button link', () => {
- render();
-
- const backLink = screen.getByRole('link', { name: '' });
- expect(backLink).toHaveAttribute('href', '/admin');
- });
-
- it('renders coming soon message', () => {
- render();
-
- expect(
- screen.getByText('Organization Management Coming Soon')
- ).toBeInTheDocument();
- });
-
- it('renders feature list', () => {
- render();
-
- expect(
- screen.getByText(/Organization list with search and filtering/)
- ).toBeInTheDocument();
- expect(
- screen.getByText(/View organization details and members/)
- ).toBeInTheDocument();
- expect(
- screen.getByText(/Manage organization memberships/)
- ).toBeInTheDocument();
- expect(
- screen.getByText(/Organization statistics and activity/)
- ).toBeInTheDocument();
- expect(screen.getByText(/Bulk operations/)).toBeInTheDocument();
- });
-
it('renders with proper container structure', () => {
const { container } = render();
@@ -61,4 +19,10 @@ describe('AdminOrganizationsPage', () => {
expect(containerDiv).toBeInTheDocument();
expect(containerDiv).toHaveClass('mx-auto', 'px-6', 'py-8');
});
+
+ it('renders organization management content', () => {
+ render();
+
+ expect(screen.getByTestId('organization-management')).toBeInTheDocument();
+ });
});
diff --git a/frontend/tests/lib/api/hooks/useAdmin.test.tsx b/frontend/tests/lib/api/hooks/useAdmin.test.tsx
index 144a829..e567722 100644
--- a/frontend/tests/lib/api/hooks/useAdmin.test.tsx
+++ b/frontend/tests/lib/api/hooks/useAdmin.test.tsx
@@ -19,6 +19,7 @@ import {
import {
adminListUsers,
adminListOrganizations,
+ adminListSessions,
adminCreateUser,
adminUpdateUser,
adminDeleteUser,
@@ -34,6 +35,7 @@ jest.mock('@/lib/auth/AuthContext');
const mockAdminListUsers = adminListUsers as jest.MockedFunction;
const mockAdminListOrganizations = adminListOrganizations as jest.MockedFunction;
+const mockAdminListSessions = adminListSessions as jest.MockedFunction;
const mockUseAuth = useAuth as jest.MockedFunction;
describe('useAdmin hooks', () => {
@@ -74,6 +76,12 @@ describe('useAdmin hooks', () => {
},
};
+ const mockSessionsData = {
+ data: {
+ pagination: { total: 10 },
+ },
+ };
+
it('fetches and calculates stats when user is superuser', async () => {
mockUseAuth.mockReturnValue({
user: { is_superuser: true } as any,
@@ -85,6 +93,7 @@ describe('useAdmin hooks', () => {
mockAdminListUsers.mockResolvedValue(mockUsersData as any);
mockAdminListOrganizations.mockResolvedValue(mockOrgsData as any);
+ mockAdminListSessions.mockResolvedValue(mockSessionsData as any);
const { result } = renderHook(() => useAdminStats(), { wrapper });
@@ -94,7 +103,7 @@ describe('useAdmin hooks', () => {
totalUsers: 3,
activeUsers: 2,
totalOrganizations: 5,
- totalSessions: 0,
+ totalSessions: 10,
});
expect(mockAdminListUsers).toHaveBeenCalledWith({
@@ -106,6 +115,11 @@ describe('useAdmin hooks', () => {
query: { page: 1, limit: 100 },
throwOnError: false,
});
+
+ expect(mockAdminListSessions).toHaveBeenCalledWith({
+ query: { page: 1, limit: 100 },
+ throwOnError: false,
+ });
});
it('does not fetch when user is not superuser', async () => {