Coverage for src/api/tests/test_serializers.py: 100%

24 statements  

« prev     ^ index     » next       coverage.py v7.11.1, created at 2025-11-08 10:41 +0000

1import pytest 

2from src.api.serializers import ParkingLotDetailSerializer, UserRegistrationSerializer 

3from django.contrib.auth.models import User 

4from django.conf import settings 

5 

6 

7@pytest.mark.parametrize("field,value,error", [ 

8 ("name", " a ", "at least 3 characters"), 

9 ("city", "Ky1v", "only letters"), 

10 ("street", "St", "at least 3 characters"), 

11 ("building", "12@", "Invalid building number"), 

12]) 

13def test_invalid_fields_raise_error(field, value, error): 

14 data = {"name": "ValidName", "city": "Kyiv", "street": "Main", "building": "10"} 

15 data[field] = value 

16 serializer = ParkingLotDetailSerializer(data=data) 

17 assert not serializer.is_valid() 

18 assert any(error in str(msg) for msg in serializer.errors.values()) 

19 

20 

21def test_valid_parking_lot_serializer(): 

22 data = {"name": "Ocean", "city": "Kyiv", "street": "Main", "building": "1A"} 

23 serializer = ParkingLotDetailSerializer(data=data) 

24 assert serializer.is_valid() is True 

25 

26 

27@pytest.mark.django_db 

28def test_user_registration_serializer_creates_user(): 

29 data = { 

30 "username": "tester", 

31 "email": "tester@example.com", 

32 "password": settings.STRONG_PASSWORD_FOR_TESTS, 

33 "first_name": "Valeria", 

34 "last_name": "QATest" 

35 } 

36 serializer = UserRegistrationSerializer(data=data) 

37 assert serializer.is_valid(), serializer.errors 

38 user = serializer.save() 

39 assert isinstance(user, User) 

40 assert user.check_password("StrongPass123!") 

41 assert user.email == "tester@example.com"