Skip to content

Commit 30e77bd

Browse files
committed
testing formatting
1 parent eb4aab3 commit 30e77bd

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

packages/models-library/src/models_library/api_schemas_webserver/users.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import re
22
from datetime import date, datetime
33
from enum import Enum
4-
from typing import Annotated, Any, Literal, Self
4+
from typing import Annotated, Any, Literal, Self, TypeAlias
55

66
import annotated_types
77
from common_library.basic_types import DEFAULT_FACTORY
@@ -20,6 +20,7 @@
2020
field_validator,
2121
)
2222
from pydantic.config import JsonDict
23+
from pydantic_extra_types.phone_numbers import PhoneNumberValidator
2324

2425
from ..basic_types import IDStr
2526
from ..emails import LowerCaseEmailStr
@@ -212,10 +213,12 @@ def _validate_user_name(cls, value: str):
212213
#
213214

214215

216+
PhoneNumberStr: TypeAlias = Annotated[str, PhoneNumberValidator()]
217+
218+
215219
class MyPhoneRegister(InputSchema):
216220
phone: Annotated[
217-
str,
218-
StringConstraints(strip_whitespace=True, min_length=1),
221+
PhoneNumberStr,
219222
Field(description="Phone number to register"),
220223
]
221224

packages/models-library/tests/test_users.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
from models_library.api_schemas_webserver.users import MyProfileRestGet
1+
import pytest
2+
from models_library.api_schemas_webserver.users import (
3+
MyPhoneRegister,
4+
MyProfileRestGet,
5+
PhoneNumberStr,
6+
)
27
from models_library.api_schemas_webserver.users_preferences import Preference
38
from models_library.groups import AccessRightsDict, Group, GroupsByTypeTuple
49
from models_library.users import MyProfile
5-
from pydantic import TypeAdapter
10+
from pydantic import TypeAdapter, ValidationError
611

712

813
def test_adapter_from_model_to_schema():
@@ -25,3 +30,24 @@ def test_adapter_from_model_to_schema():
2530
MyProfileRestGet.from_domain_model(
2631
my_profile, my_groups_by_type, my_product_group, my_preferences
2732
)
33+
34+
35+
@pytest.mark.parametrize(
36+
"phone",
37+
["+41763456789", "+19104630364", "+1 301-304-4567"],
38+
)
39+
def test_valid_phone_numbers(phone: str):
40+
# This test is used to tune options of PhoneNumberValidator
41+
assert MyPhoneRegister.model_validate({"phone": phone}).phone == TypeAdapter(
42+
PhoneNumberStr
43+
).validate_python(phone)
44+
45+
46+
@pytest.mark.parametrize(
47+
"phone",
48+
["41763456789", "+09104630364", "+1 111-304-4567"],
49+
)
50+
def test_invalid_phone_numbers(phone: str):
51+
# This test is used to tune options of PhoneNumberValidator
52+
with pytest.raises(ValidationError):
53+
MyPhoneRegister.model_validate({"phone": phone})

0 commit comments

Comments
 (0)