feat: deprecate email, pre-verify users + documentation

This commit is contained in:
2026-03-14 14:40:52 +03:00
parent ad711d1daf
commit 9787fb699a
13 changed files with 223 additions and 21 deletions
@@ -0,0 +1,103 @@
from datetime import timedelta, time
import pytest
from django.utils import timezone
from apps.accounts.models import User, UserRole
from apps.bookings.models import Booking
from apps.bookings.serializers import BookingSerializer
from apps.salons.models import (
Salon,
Service,
StaffAvailability,
StaffProfile,
Review,
)
from apps.salons.serializers import ReviewSerializer, StaffSerializer
@pytest.mark.django_db
class TestDisplayNameFallbacks:
def _create_customer(self, phone_number):
return User.objects.create_user(phone_number=phone_number)
def _create_staff_user(self, phone_number):
return User.objects.create_user(phone_number=phone_number, role=UserRole.STAFF)
def _create_salon(self, owner):
return Salon.objects.create(
owner=owner,
name="Test Salon",
address="123 Main",
city="Riyadh",
)
def _create_service(self, salon):
return Service.objects.create(
salon=salon,
name="Haircut",
description="",
duration_minutes=60,
price_amount=200,
currency="SAR",
)
def test_staff_serializer_falls_back_to_phone(self):
owner = User.objects.create_user(phone_number="+966500000001", email="owner@example.com")
salon = self._create_salon(owner)
staff_user = self._create_staff_user(phone_number="+966500000002")
staff_profile = StaffProfile.objects.create(user=staff_user, salon=salon)
serializer = StaffSerializer(staff_profile)
assert serializer.data["name"] == "+966500000002"
def test_review_serializer_customer_name_uses_phone(self):
owner = User.objects.create_user(phone_number="+966500000003", email="owner2@example.com")
salon = self._create_salon(owner)
customer = self._create_customer(phone_number="+966500000004")
review = Review.objects.create(salon=salon, customer=customer, rating=5, comment="Great")
serializer = ReviewSerializer(review)
assert serializer.data["customer_name"] == "+966500000004"
assert "+966500000004" in str(review)
def test_booking_serializer_staff_name_and_str_use_phone(self):
owner = User.objects.create_user(phone_number="+966500000005", email="owner3@example.com")
salon = self._create_salon(owner)
staff_user = self._create_staff_user(phone_number="+966500000006")
staff_profile = StaffProfile.objects.create(user=staff_user, salon=salon)
service = self._create_service(salon)
customer = self._create_customer(phone_number="+966500000007")
start = timezone.now()
booking = Booking.objects.create(
salon=salon,
customer=customer,
service=service,
staff=staff_profile,
start_time=start,
end_time=start + timedelta(hours=1),
price_amount=service.price_amount,
currency=service.currency,
)
serializer = BookingSerializer(booking)
assert serializer.data["staff_name"] == "+966500000006"
assert "+966500000007" in str(booking)
def test_staff_model_str_uses_phone(self):
owner = User.objects.create_user(phone_number="+966500000008", email="owner4@example.com")
salon = self._create_salon(owner)
staff_user = self._create_staff_user(phone_number="+966500000009")
staff_profile = StaffProfile.objects.create(user=staff_user, salon=salon)
availability = StaffAvailability.objects.create(
staff=staff_profile,
day_of_week=0,
start_time=time(9, 0),
end_time=time(10, 0),
)
assert "+966500000009" in str(staff_profile)
assert "+966500000009" in str(availability)