import pytest from apps.core.persian_text import normalize_persian_text from apps.accounts.models import User from apps.customers.models import CustomerProfile from apps.messaging.models import Message, MessageRevision from apps.staff.models import StaffProfile from apps.tickets.models import TicketCategory from apps.tickets.services import create_ticket def test_normalizer_corrects_persian_letters_and_preserves_paragraphs_and_codes(): source = "علي مي رود AB-123 و https://example.com/a?q=1\n\nاين يك تست است." assert normalize_persian_text(source, multiline=True) == ( "علی می‌رود AB-123 و https://example.com/a?q=1\n\nاین یک تست است." ) def test_normalizer_does_not_convert_numbers_or_remove_marks(): assert normalize_persian_text("کد 123، قیمت 12.5% 😊") == "کد 123، قیمت 12.5% 😊" @pytest.mark.django_db def test_selected_profile_fields_are_normalized_on_save(): customer = User.objects.create_user(username="persian-customer", mobile="09121112222") staff_user = User.objects.create_user(username="persian-staff", mobile="09121113333", account_type="STAFF") profile = CustomerProfile.objects.create(user=customer, first_name="علي", last_name="رضايي") staff = StaffProfile.objects.create(user=staff_user, display_name="كارشناس فروش") profile.refresh_from_db() staff.refresh_from_db() assert (profile.first_name, profile.last_name) == ("علی", "رضایی") assert staff.display_name == "کارشناس فروش" @pytest.mark.django_db def test_message_and_revision_are_normalized_on_save(): customer = User.objects.create_user(username="message-customer", mobile="09121114444") category = TicketCategory.objects.create(title="پشتيباني", slug="persian-normalization") ticket = create_ticket(customer=customer, category=category, subject="موضوع معتبر", body="متن آغازين") message = Message.objects.create(ticket=ticket, author=customer, body="اين متن است") revision = MessageRevision.objects.create(message=message, body="متن قبلي", edited_by=customer) assert message.body == "این متن است" assert revision.body == "متن قبلی"