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