Files
thrillwiki_django_no_react/backend/tests/ux/test_messages.py

140 lines
4.5 KiB
Python

"""
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()
)