mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-25 01:31:09 -05:00
Add standardized HTMX conventions, interaction patterns, and migration guide for ThrillWiki UX
This commit is contained in:
139
backend/tests/ux/test_messages.py
Normal file
139
backend/tests/ux/test_messages.py
Normal file
@@ -0,0 +1,139 @@
|
||||
"""
|
||||
Tests for standardized message utilities.
|
||||
|
||||
These tests verify that message helper functions generate
|
||||
consistent, user-friendly messages.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
from apps.core.utils.messages import (
|
||||
confirm_delete,
|
||||
error_not_found,
|
||||
error_permission,
|
||||
error_validation,
|
||||
info_no_changes,
|
||||
success_created,
|
||||
success_deleted,
|
||||
success_updated,
|
||||
warning_unsaved,
|
||||
)
|
||||
|
||||
|
||||
class TestSuccessMessages:
|
||||
"""Tests for success message helpers."""
|
||||
|
||||
def test_success_created_basic(self):
|
||||
"""Should generate basic created message."""
|
||||
message = success_created("Park")
|
||||
assert "Park" in message
|
||||
assert "created" in message.lower()
|
||||
|
||||
def test_success_created_with_name(self):
|
||||
"""Should include object name when provided."""
|
||||
message = success_created("Park", "Disneyland")
|
||||
assert "Disneyland" in message
|
||||
|
||||
def test_success_created_custom(self):
|
||||
"""Should use custom message when provided."""
|
||||
message = success_created("Park", custom_message="Your park is ready!")
|
||||
assert message == "Your park is ready!"
|
||||
|
||||
def test_success_updated_basic(self):
|
||||
"""Should generate basic updated message."""
|
||||
message = success_updated("Park")
|
||||
assert "Park" in message
|
||||
assert "updated" in message.lower()
|
||||
|
||||
def test_success_updated_with_name(self):
|
||||
"""Should include object name when provided."""
|
||||
message = success_updated("Park", "Disneyland")
|
||||
assert "Disneyland" in message
|
||||
|
||||
def test_success_deleted_basic(self):
|
||||
"""Should generate basic deleted message."""
|
||||
message = success_deleted("Park")
|
||||
assert "Park" in message
|
||||
assert "deleted" in message.lower()
|
||||
|
||||
def test_success_deleted_with_name(self):
|
||||
"""Should include object name when provided."""
|
||||
message = success_deleted("Park", "Old Park")
|
||||
assert "Old Park" in message
|
||||
|
||||
|
||||
class TestErrorMessages:
|
||||
"""Tests for error message helpers."""
|
||||
|
||||
def test_error_validation_generic(self):
|
||||
"""Should generate generic validation error."""
|
||||
message = error_validation()
|
||||
assert "validation" in message.lower() or "invalid" in message.lower()
|
||||
|
||||
def test_error_validation_with_field(self):
|
||||
"""Should include field name when provided."""
|
||||
message = error_validation("email")
|
||||
assert "email" in message.lower()
|
||||
|
||||
def test_error_validation_custom(self):
|
||||
"""Should use custom message when provided."""
|
||||
message = error_validation(custom_message="Email format is invalid")
|
||||
assert message == "Email format is invalid"
|
||||
|
||||
def test_error_not_found_basic(self):
|
||||
"""Should generate not found message."""
|
||||
message = error_not_found("Park")
|
||||
assert "Park" in message
|
||||
assert "not found" in message.lower() or "could not" in message.lower()
|
||||
|
||||
def test_error_permission_basic(self):
|
||||
"""Should generate permission denied message."""
|
||||
message = error_permission()
|
||||
assert "permission" in message.lower() or "authorized" in message.lower()
|
||||
|
||||
def test_error_permission_with_action(self):
|
||||
"""Should include action when provided."""
|
||||
message = error_permission("delete this park")
|
||||
assert "delete" in message.lower()
|
||||
|
||||
|
||||
class TestWarningMessages:
|
||||
"""Tests for warning message helpers."""
|
||||
|
||||
def test_warning_unsaved(self):
|
||||
"""Should generate unsaved changes warning."""
|
||||
message = warning_unsaved()
|
||||
assert "unsaved" in message.lower() or "changes" in message.lower()
|
||||
|
||||
|
||||
class TestInfoMessages:
|
||||
"""Tests for info message helpers."""
|
||||
|
||||
def test_info_no_changes(self):
|
||||
"""Should generate no changes message."""
|
||||
message = info_no_changes()
|
||||
assert "no changes" in message.lower() or "nothing" in message.lower()
|
||||
|
||||
|
||||
class TestConfirmMessages:
|
||||
"""Tests for confirmation message helpers."""
|
||||
|
||||
def test_confirm_delete_basic(self):
|
||||
"""Should generate delete confirmation message."""
|
||||
message = confirm_delete("Park")
|
||||
assert "Park" in message
|
||||
assert "delete" in message.lower()
|
||||
|
||||
def test_confirm_delete_with_name(self):
|
||||
"""Should include object name when provided."""
|
||||
message = confirm_delete("Park", "Disneyland")
|
||||
assert "Disneyland" in message
|
||||
|
||||
def test_confirm_delete_warning(self):
|
||||
"""Should include warning about irreversibility."""
|
||||
message = confirm_delete("Park")
|
||||
assert (
|
||||
"cannot be undone" in message.lower()
|
||||
or "permanent" in message.lower()
|
||||
or "sure" in message.lower()
|
||||
)
|
||||
Reference in New Issue
Block a user