73 lines
2.8 KiB
Markdown
73 lines
2.8 KiB
Markdown
# Test Plan
|
|
|
|
## Events.Tests.UnitTests
|
|
|
|
- `PagingInfo` and `PagedList`
|
|
- `TotalPages` calculation
|
|
- `ToggleSort`, `IsSortedBy`, `IsDescending`
|
|
- pagination behavior and page bounds
|
|
- `SieveModelExtensions`
|
|
- normalization of `page`, `pageSize`, and default `sort`
|
|
- extracting filter values for `@=*`, `@=`, and `==`
|
|
- controller guards and redirects
|
|
- `People` without countries
|
|
- `Registrations` without events, sports, or people
|
|
- verify that the correct `RedirectToActionResult` is returned and the expected toast is stored in `TempData`
|
|
- controller result and view model checks
|
|
- verify whether an action returns the correct `ViewResult`, `PartialViewResult`, `NotFoundResult`, `BadRequestResult`, or `ContentResult`
|
|
- verify that an action returns the expected view model type and expected values inside the view model
|
|
- validation and mapping logic from controllers
|
|
- `CountriesController` translations `json <-> view model`
|
|
- duplicate language validation and empty translation row handling
|
|
- small helpers and formatting logic
|
|
- toast payload helpers if they are extracted later
|
|
- route/pager helper logic that can be tested without a full MVC host
|
|
|
|
## Events.Tests.IntegrationTests
|
|
|
|
- HTTP tests against the MVC application through `WebApplicationFactory`
|
|
- `GET` requests for screens return `200`
|
|
- HTMX requests return the correct partial
|
|
- redirect and guard scenarios
|
|
- `People` without countries redirects to `Countries`
|
|
- `Registrations` without events/sports/people redirects to the correct screen
|
|
- CRUD happy paths for main screens
|
|
- create/edit/delete for `Sports`, `Events`, `Countries`, and `People`
|
|
- create/edit/delete for `Registrations` for the selected event
|
|
- validation and error flow
|
|
- invalid input returns a partial with validation messages
|
|
- DB conflicts return readable `ProblemDetails`
|
|
- filtering, sorting, and paging
|
|
- `Sieve` query strings return expected results
|
|
- transcription and country filtering for registrations
|
|
|
|
For these tests, the best setup is a dedicated PostgreSQL test container or an isolated test database with seeded data.
|
|
|
|
## Events.Tests.UITests
|
|
|
|
- end-to-end user flows in the browser
|
|
- open a screen, use the collapse form, save a record, see a toast
|
|
- paging and sorting without duplicating layout
|
|
- HTMX inline edit and cancel
|
|
- `Registrations` screen
|
|
- changing the event refreshes the table
|
|
- person autocomplete works and respects the country filter
|
|
- create/edit/delete registration
|
|
- navigation smoke tests
|
|
- all main links work
|
|
- redirect messages through toast are displayed
|
|
|
|
For UI tests, Playwright is the most natural choice, with a small smoke suite and a few critical end-to-end flows.
|
|
|
|
Suggested local setup:
|
|
|
|
```powershell
|
|
dotnet tool install --global Microsoft.Playwright.CLI
|
|
```
|
|
|
|
Then inside the UI test project:
|
|
|
|
```powershell
|
|
playwright install
|
|
```
|