forked from cardosofelipe/fast-next-template
Add unit tests for Admin pages: Settings, Users, and Organizations
- Implemented rendering tests for titles, descriptions, placeholders, and feature lists. - Verified proper container structure and navigation links for each admin page.
This commit is contained in:
@@ -1,26 +1,29 @@
|
|||||||
/**
|
/**
|
||||||
* Tests for Preferences Page
|
* Tests for Preferences Page
|
||||||
* Smoke tests for placeholder page
|
* Verifies rendering of preferences placeholder
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { render, screen } from '@testing-library/react';
|
import { render, screen } from '@testing-library/react';
|
||||||
import PreferencesPage from '@/app/(authenticated)/settings/preferences/page';
|
import PreferencesPage from '@/app/(authenticated)/settings/preferences/page';
|
||||||
|
|
||||||
describe('PreferencesPage', () => {
|
describe('PreferencesPage', () => {
|
||||||
it('renders without crashing', () => {
|
it('renders page title', () => {
|
||||||
render(<PreferencesPage />);
|
render(<PreferencesPage />);
|
||||||
|
|
||||||
expect(screen.getByText('Preferences')).toBeInTheDocument();
|
expect(screen.getByText('Preferences')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('renders heading', () => {
|
it('renders placeholder message', () => {
|
||||||
render(<PreferencesPage />);
|
render(<PreferencesPage />);
|
||||||
|
|
||||||
expect(screen.getByRole('heading', { name: /^preferences$/i })).toBeInTheDocument();
|
expect(
|
||||||
|
screen.getByText(/Configure your preferences/)
|
||||||
|
).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows placeholder text', () => {
|
it('mentions Task 3.5', () => {
|
||||||
render(<PreferencesPage />);
|
render(<PreferencesPage />);
|
||||||
|
|
||||||
expect(screen.getByText(/configure your preferences/i)).toBeInTheDocument();
|
expect(screen.getByText(/Task 3.5/)).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
64
frontend/tests/app/admin/organizations/page.test.tsx
Normal file
64
frontend/tests/app/admin/organizations/page.test.tsx
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
/**
|
||||||
|
* Tests for Admin Organizations Page
|
||||||
|
* Verifies rendering of organization management placeholder
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { render, screen } from '@testing-library/react';
|
||||||
|
import AdminOrganizationsPage from '@/app/admin/organizations/page';
|
||||||
|
|
||||||
|
describe('AdminOrganizationsPage', () => {
|
||||||
|
it('renders page title', () => {
|
||||||
|
render(<AdminOrganizationsPage />);
|
||||||
|
|
||||||
|
expect(screen.getByText('Organizations')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders page description', () => {
|
||||||
|
render(<AdminOrganizationsPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText('Manage organizations and their members')
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders back button link', () => {
|
||||||
|
render(<AdminOrganizationsPage />);
|
||||||
|
|
||||||
|
const backLink = screen.getByRole('link', { name: '' });
|
||||||
|
expect(backLink).toHaveAttribute('href', '/admin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders coming soon message', () => {
|
||||||
|
render(<AdminOrganizationsPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText('Organization Management Coming Soon')
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders feature list', () => {
|
||||||
|
render(<AdminOrganizationsPage />);
|
||||||
|
|
||||||
|
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(<AdminOrganizationsPage />);
|
||||||
|
|
||||||
|
const containerDiv = container.querySelector('.container');
|
||||||
|
expect(containerDiv).toBeInTheDocument();
|
||||||
|
expect(containerDiv).toHaveClass('mx-auto', 'px-6', 'py-8');
|
||||||
|
});
|
||||||
|
});
|
||||||
66
frontend/tests/app/admin/settings/page.test.tsx
Normal file
66
frontend/tests/app/admin/settings/page.test.tsx
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/**
|
||||||
|
* Tests for Admin Settings Page
|
||||||
|
* Verifies rendering of system settings placeholder
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { render, screen } from '@testing-library/react';
|
||||||
|
import AdminSettingsPage from '@/app/admin/settings/page';
|
||||||
|
|
||||||
|
describe('AdminSettingsPage', () => {
|
||||||
|
it('renders page title', () => {
|
||||||
|
render(<AdminSettingsPage />);
|
||||||
|
|
||||||
|
expect(screen.getByText('System Settings')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders page description', () => {
|
||||||
|
render(<AdminSettingsPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText('Configure system-wide settings and preferences')
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders back button link', () => {
|
||||||
|
render(<AdminSettingsPage />);
|
||||||
|
|
||||||
|
const backLink = screen.getByRole('link', { name: '' });
|
||||||
|
expect(backLink).toHaveAttribute('href', '/admin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders coming soon message', () => {
|
||||||
|
render(<AdminSettingsPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText('System Settings Coming Soon')
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders feature list', () => {
|
||||||
|
render(<AdminSettingsPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText(/General system configuration/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.getByText(/Email and notification settings/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.getByText(/Security and authentication options/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.getByText(/API and integration settings/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.getByText(/Maintenance and backup tools/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders with proper container structure', () => {
|
||||||
|
const { container } = render(<AdminSettingsPage />);
|
||||||
|
|
||||||
|
const containerDiv = container.querySelector('.container');
|
||||||
|
expect(containerDiv).toBeInTheDocument();
|
||||||
|
expect(containerDiv).toHaveClass('mx-auto', 'px-6', 'py-8');
|
||||||
|
});
|
||||||
|
});
|
||||||
60
frontend/tests/app/admin/users/page.test.tsx
Normal file
60
frontend/tests/app/admin/users/page.test.tsx
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
* Tests for Admin Users Page
|
||||||
|
* Verifies rendering of user management placeholder
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { render, screen } from '@testing-library/react';
|
||||||
|
import AdminUsersPage from '@/app/admin/users/page';
|
||||||
|
|
||||||
|
describe('AdminUsersPage', () => {
|
||||||
|
it('renders page title', () => {
|
||||||
|
render(<AdminUsersPage />);
|
||||||
|
|
||||||
|
expect(screen.getByText('User Management')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders page description', () => {
|
||||||
|
render(<AdminUsersPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText('View, create, and manage user accounts')
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders back button link', () => {
|
||||||
|
render(<AdminUsersPage />);
|
||||||
|
|
||||||
|
const backLink = screen.getByRole('link', { name: '' });
|
||||||
|
expect(backLink).toHaveAttribute('href', '/admin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders coming soon message', () => {
|
||||||
|
render(<AdminUsersPage />);
|
||||||
|
|
||||||
|
expect(screen.getByText('User Management Coming Soon')).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders feature list', () => {
|
||||||
|
render(<AdminUsersPage />);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
screen.getByText(/User list with search and filtering/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.getByText(/Create\/edit\/delete user accounts/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(screen.getByText(/Activate\/deactivate users/)).toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.getByText(/Role and permission management/)
|
||||||
|
).toBeInTheDocument();
|
||||||
|
expect(screen.getByText(/Bulk operations/)).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders with proper container structure', () => {
|
||||||
|
const { container } = render(<AdminUsersPage />);
|
||||||
|
|
||||||
|
const containerDiv = container.querySelector('.container');
|
||||||
|
expect(containerDiv).toBeInTheDocument();
|
||||||
|
expect(containerDiv).toHaveClass('mx-auto', 'px-6', 'py-8');
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user