Files
predavanja/Events-MVC/Tests

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:

dotnet tool install --global Microsoft.Playwright.CLI

Then inside the UI test project:

playwright install