mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-30 12:07:03 -05:00
feat: Implement MFA authentication, add ride statistics model, and update various services, APIs, and tests across the application.
This commit is contained in:
@@ -6,14 +6,14 @@ for testing FSM transitions, HTMX interactions, and other common scenarios.
|
||||
"""
|
||||
|
||||
from .fsm_test_helpers import (
|
||||
create_test_submission,
|
||||
assert_state_log_created,
|
||||
assert_status_changed,
|
||||
assert_toast_triggered,
|
||||
create_test_park,
|
||||
create_test_ride,
|
||||
assert_status_changed,
|
||||
assert_state_log_created,
|
||||
assert_toast_triggered,
|
||||
wait_for_htmx_swap,
|
||||
create_test_submission,
|
||||
verify_transition_buttons_visible,
|
||||
wait_for_htmx_swap,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
|
||||
@@ -9,10 +9,11 @@ Reusable utility functions for testing FSM transitions:
|
||||
"""
|
||||
|
||||
import json
|
||||
from typing import Any, Dict, List, Optional, Type
|
||||
from django.db.models import Model
|
||||
from typing import Any
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db.models import Model
|
||||
from django.http import HttpResponse
|
||||
|
||||
User = get_user_model()
|
||||
@@ -25,10 +26,10 @@ User = get_user_model()
|
||||
|
||||
def create_test_submission(
|
||||
status: str = "PENDING",
|
||||
user: Optional[User] = None,
|
||||
park: Optional[Model] = None,
|
||||
user: User | None = None,
|
||||
park: Model | None = None,
|
||||
submission_type: str = "EDIT",
|
||||
changes: Optional[Dict[str, Any]] = None,
|
||||
changes: dict[str, Any] | None = None,
|
||||
reason: str = "Test submission",
|
||||
**kwargs
|
||||
) -> "EditSubmission":
|
||||
@@ -87,8 +88,8 @@ def create_test_submission(
|
||||
|
||||
def create_test_park(
|
||||
status: str = "OPERATING",
|
||||
name: Optional[str] = None,
|
||||
slug: Optional[str] = None,
|
||||
name: str | None = None,
|
||||
slug: str | None = None,
|
||||
**kwargs
|
||||
) -> "Park":
|
||||
"""
|
||||
@@ -125,9 +126,9 @@ def create_test_park(
|
||||
|
||||
def create_test_ride(
|
||||
status: str = "OPERATING",
|
||||
name: Optional[str] = None,
|
||||
slug: Optional[str] = None,
|
||||
park: Optional[Model] = None,
|
||||
name: str | None = None,
|
||||
slug: str | None = None,
|
||||
park: Model | None = None,
|
||||
**kwargs
|
||||
) -> "Ride":
|
||||
"""
|
||||
@@ -170,8 +171,8 @@ def create_test_ride(
|
||||
|
||||
def create_test_photo_submission(
|
||||
status: str = "PENDING",
|
||||
user: Optional[User] = None,
|
||||
park: Optional[Model] = None,
|
||||
user: User | None = None,
|
||||
park: Model | None = None,
|
||||
**kwargs
|
||||
) -> "PhotoSubmission":
|
||||
"""
|
||||
@@ -254,8 +255,8 @@ def assert_status_changed(obj: Model, expected_status: str) -> None:
|
||||
def assert_state_log_created(
|
||||
obj: Model,
|
||||
transition_name: str,
|
||||
user: Optional[User] = None,
|
||||
expected_state: Optional[str] = None
|
||||
user: User | None = None,
|
||||
expected_state: str | None = None
|
||||
) -> None:
|
||||
"""
|
||||
Assert that a StateLog entry was created for a transition.
|
||||
@@ -295,7 +296,7 @@ def assert_state_log_created(
|
||||
|
||||
def assert_toast_triggered(
|
||||
response: HttpResponse,
|
||||
message: Optional[str] = None,
|
||||
message: str | None = None,
|
||||
toast_type: str = "success"
|
||||
) -> None:
|
||||
"""
|
||||
@@ -375,9 +376,9 @@ def wait_for_htmx_swap(
|
||||
|
||||
def verify_transition_buttons_visible(
|
||||
page,
|
||||
transitions: List[str],
|
||||
transitions: list[str],
|
||||
container_selector: str = "[data-status-actions]"
|
||||
) -> Dict[str, bool]:
|
||||
) -> dict[str, bool]:
|
||||
"""
|
||||
Verify which transition buttons are visible on the page.
|
||||
|
||||
@@ -487,7 +488,7 @@ def click_and_confirm(page, button_locator, accept: bool = True) -> None:
|
||||
# =============================================================================
|
||||
|
||||
|
||||
def make_htmx_post(client, url: str, data: Optional[Dict] = None) -> HttpResponse:
|
||||
def make_htmx_post(client, url: str, data: dict | None = None) -> HttpResponse:
|
||||
"""
|
||||
Make a POST request with HTMX headers.
|
||||
|
||||
@@ -529,7 +530,7 @@ def get_fsm_transition_url(
|
||||
pk: int,
|
||||
transition_name: str,
|
||||
use_slug: bool = False,
|
||||
slug: Optional[str] = None
|
||||
slug: str | None = None
|
||||
) -> str:
|
||||
"""
|
||||
Generate the URL for an FSM transition.
|
||||
|
||||
Reference in New Issue
Block a user