diff --git a/src/app/settings/page.test.tsx b/src/app/settings/page.test.tsx
index a30224c..dc4a0d4 100644
--- a/src/app/settings/page.test.tsx
+++ b/src/app/settings/page.test.tsx
@@ -3,7 +3,7 @@
*/
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
-import { render, screen, waitFor } from '@testing-library/react'
+import { render, screen, waitFor, within } from '@testing-library/react'
import { axe } from 'vitest-axe'
import SettingsPage from './page'
@@ -23,6 +23,7 @@ vi.mock('@/hooks/use-auth', () => {
handle: 'alice.bsky.social',
displayName: 'Alice',
avatarUrl: null,
+ role: 'user' as const,
},
isAuthenticated: true,
isLoading: false,
@@ -81,6 +82,13 @@ describe('SettingsPage', () => {
expect(screen.getByLabelText(/maturity level/i)).toBeInTheDocument()
})
+ it('renders age bracket dropdown', async () => {
+ render()
+ await waitFor(() => {
+ expect(screen.getByLabelText(/age bracket/i)).toBeInTheDocument()
+ })
+ })
+
it('renders muted words input', async () => {
render()
await waitFor(() => {
@@ -88,6 +96,16 @@ describe('SettingsPage', () => {
})
})
+ it('renders blocked users section with handle-based input', async () => {
+ render()
+ await waitFor(() => {
+ expect(screen.getByText('Blocked users')).toBeInTheDocument()
+ })
+ const safetyFieldset = screen.getByText('Content Safety').closest('fieldset')!
+ expect(within(safetyFieldset).getByLabelText('Handle to block')).toBeInTheDocument()
+ expect(within(safetyFieldset).getByText('No users blocked.')).toBeInTheDocument()
+ })
+
it('renders cross-posting section', async () => {
render()
await waitFor(() => {
diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx
index b0162b2..e567455 100644
--- a/src/app/settings/page.tsx
+++ b/src/app/settings/page.tsx
@@ -35,6 +35,7 @@ export default function SettingsPage() {
values,
setValues,
loading,
+ declaredAge,
savingCommunity,
communityError,
communitySuccess,
@@ -45,6 +46,9 @@ export default function SettingsPage() {
showCrossPostAuthDialog,
setShowCrossPostAuthDialog,
crossPostScopesGranted,
+ handleBlockUser,
+ handleUnblockUser,
+ handleAgeChange,
handleSaveCommunitySettings,
handleSaveGlobalSettings,
handleAgeConfirm,
@@ -187,11 +191,14 @@ export default function SettingsPage() {