Skip to content

QA Testing Plan: Forums

This document covers QA test cases for the Forums business app located at /business/apps/forums. The app supports creating forum boards via a dialog with validated fields (title, slug, description), listing forums with topic counts, deleting forums, and navigating to forum topics.

RoutePurpose
/business/apps/forumsForum list with create dialog and delete action
/forums/{slug}Public forum view with topics (linked from management page)
RouteActionMethodKey Fields
/business/apps/forumscreatePOSTtitle (required, max 200), slug (required, max 200), description (optional, max 1000)
/business/apps/forumsdeletePOSTforum_id
createForumSchema:
title: string, min 1, max 200 (required)
slug: string, min 1, max 200 (required)
description: string, max 1000 (optional)

Test IDDescriptionPreconditionsStepsExpected ResultPriority
FRM-001Forum list loads for authenticated userUser is logged in with forums1. Navigate to /business/apps/forumsForum list is displayed with title, topic count, and creation date. Create form is initialized.P0
FRM-002Empty state when no forumsUser is logged in with no forums1. Navigate to /business/apps/forumsEmpty state with MessageCircleIcon and “No forums yet. Create your first one to get started.”P1
FRM-003Unauthenticated user gets empty dataUser is not logged in1. Navigate to /business/apps/forumsPage loads with empty forums array and form: null. No crash.P1
FRM-004Forum row links to public forum pageUser has forums1. Click a forum rowNavigates to /forums/{slug}.P1
FRM-005Topic count displays correctlyForums have topics1. View forum listEach forum shows {count} topics from forum_topics join.P1
FRM-006”New Forum” button opens create dialogUser is logged in1. Click “New Forum” buttonDialog opens with title “New Forum”, description, and form fields for title, slug, description.P0
Test IDDescriptionPreconditionsStepsExpected ResultPriority
FRM-010Create forum with required fieldsUser is logged in1. Open create dialog 2. Fill title and slug 3. SubmitForum is created. Toast “Forum created!” appears. Dialog closes. Forum list refreshes.P0
FRM-011Create forum with all fieldsUser is logged in1. Fill title, slug, and description 2. SubmitForum is created with description persisted.P0
FRM-012Validation: empty title rejectedUser is logged in1. Leave title blank 2. SubmitClient-side validation error shown. Form does not submit.P0
FRM-013Validation: empty slug rejectedUser is logged in1. Leave slug blank 2. SubmitClient-side validation error shown. Form does not submit.P0
FRM-014Validation: title exceeds 200 charactersUser is logged in1. Enter title with 201+ characters 2. SubmitValidation error for max length.P1
FRM-015Validation: slug exceeds 200 charactersUser is logged in1. Enter slug with 201+ characters 2. SubmitValidation error for max length.P1
FRM-016Validation: description exceeds 1000 charactersUser is logged in1. Enter description with 1001+ characters 2. SubmitValidation error for max length.P1
FRM-017Server error returns messageUser is logged in, database insert fails (e.g., duplicate slug)1. Submit form that triggers DB errorForm returns 500 with error message displayed.P1
FRM-018Create action requires authenticationUser is not logged in1. POST to ?/createReturns 401 fail.P0
FRM-019Dialog cancel button closes without submittingUser is logged in1. Open create dialog 2. Click “Cancel”Dialog closes. No form submission. No forum created.P2
FRM-020Submit button shows loading stateUser is logged in1. Submit the create formButton is disabled and shows Loader2 spinner while $formSubmitting is true.P2
Test IDDescriptionPreconditionsStepsExpected ResultPriority
FRM-030Delete a forumUser owns the forum1. Click the delete (trash) button on a forum rowdelete action fires with correct forum_id. Forum is removed. Toast “Forum deleted.” appears.P0
FRM-031Delete scoped to ownerUser is logged in but does not own the forum1. POST to ?/delete with forum_id belonging to another ownerDelete query matches on owner_id, so no rows are affected. Forum remains.P1
FRM-032Delete fails without forum_idUser is logged in1. POST to ?/delete without forum_idReturns 400 “Missing forum ID”.P1
FRM-033Delete handles server errorUser is logged in, database delete fails1. Trigger server error during deletionReturns 500 with error message.P1
FRM-034Delete action requires authenticationUser is not logged in1. POST to ?/deleteReturns 401 fail.P0
FRM-035Hidden input sends correct forum_idUser owns forums1. Inspect delete form markupHidden input name="forum_id" contains the correct forum ID.P2
Test IDDescriptionPreconditionsStepsExpected ResultPriority
FRM-040Superforms client validation on createUser opens the create dialog1. Type and clear the title field 2. Observe validationClient-side validation via zodClient shows error immediately without server round-trip.P1
FRM-041Form resets after successful creationUser creates a forum successfully1. Create a forum 2. Reopen the create dialogForm fields are reset to empty defaults.P2
FRM-042Toast notification on successful createUser creates a forum1. Submit valid create formsvelte-sonner toast appears with success message.P1
FRM-043Toast notification on successful deleteUser deletes a forum1. Click delete buttonsvelte-sonner toast appears with “Forum deleted.” message.P1
FRM-044Progressive enhancement with use:enhanceJavaScript is disabled1. Submit create or delete form without JSForms submit via standard POST. Server handles request and returns appropriate response.P2