/**
* Tests for settings pages to ensure they load without errors
*/
import { jest } from '@jest/globals'
import { render, screen } from '@/__tests__/utils/test-utils.helper'
// Mock next/navigation
jest.mock('next/navigation', () => ({
useRouter: () => ({
push: jest.fn(),
replace: jest.fn(),
back: jest.fn(),
forward: jest.fn(),
refresh: jest.fn(),
prefetch: jest.fn()
}),
usePathname: () => '/settings',
useSearchParams: () => new URLSearchParams(),
useParams: () => ({})
}))
// Mock auth
jest.mock('@thedaviddias/auth', () => ({
useAuth: () => ({
user: {
id: 'test-user-id',
email: 'test@example.com',
user_metadata: {
github_username: 'testuser'
}
},
signOut: jest.fn()
})
}))
// Mock Clerk
jest.mock('@clerk/nextjs', () => ({
useUser: () => ({
user: {
id: 'test-user-id',
email: 'test@example.com',
firstName: 'Test',
lastName: 'User',
username: 'testuser',
publicMetadata: {},
user_metadata: {
github_username: 'testuser'
}
},
isLoaded: true
}),
useClerk: () => ({})
}))
// Mock sonner
jest.mock('sonner', () => ({
toast: {
success: jest.fn(),
error: jest.fn(),
info: jest.fn()
}
}))
describe('Settings Pages', () => {
describe('Settings Layout', () => {
it('should render settings layout without crashing', async () => {
const SettingsLayout = (await import('../app/settings/layout')).default
const { container } = render(
Test Content
)
expect(container).toBeTruthy()
})
})
describe('Account Settings Page', () => {
it('should render account settings page without crashing', async () => {
const AccountSettingsPage = (await import('../app/settings/account/page')).default
render()
// Check for key elements
expect(screen.getByText('Account Settings')).toBeTruthy()
expect(screen.getByText('Account Information')).toBeTruthy()
})
})
describe('Privacy Settings Page', () => {
it('should render privacy settings page without crashing', async () => {
const PrivacySettingsPage = (await import('../app/settings/privacy/page')).default
render()
// Check for key elements
expect(screen.getByText('Privacy Settings')).toBeTruthy()
expect(screen.getByText('Profile Visibility')).toBeTruthy()
})
})
describe('Integrations Settings Page', () => {
it('should render integrations settings page without crashing', async () => {
const IntegrationsSettingsPage = (await import('../app/settings/integrations/page')).default
render()
// Check for key elements
expect(screen.getByText('Integrations')).toBeTruthy()
expect(screen.getByText('GitHub')).toBeTruthy()
})
})
describe('Notifications Settings Page', () => {
it('should render notifications settings page without crashing', async () => {
const NotificationsSettingsPage = (await import('../app/settings/notifications/page')).default
render()
// Check for key elements
expect(screen.getByText('Notifications')).toBeTruthy()
expect(screen.getByText('Newsletter')).toBeTruthy()
})
})
describe('Settings Root Page', () => {
it('should render settings root page without crashing', async () => {
const SettingsPage = (await import('../app/settings/page')).default
const { container } = render()
expect(container).toBeTruthy()
})
})
})