Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/core/users/schemas_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class CoreUserBase(BaseModel):
firstname: str
nickname: str | None = None

_normalize_name = field_validator("name")(validators.trailing_spaces_remover)
_normalize_name = field_validator("name")(validators.name_normalizer)
_normalize_firstname = field_validator("firstname")(
validators.trailing_spaces_remover,
validators.name_normalizer,
)
_normalize_nickname = field_validator("nickname")(
validators.trailing_spaces_remover,
Expand Down Expand Up @@ -125,7 +125,7 @@ class CoreBatchUserCreateRequest(BaseModel):
The schema is used for batch account creation requests.
"""

email: str
email: EmailStr
default_group_id: str | None = None

# Email normalization, this will modify the email variable
Expand Down
9 changes: 9 additions & 0 deletions app/utils/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ def email_normalizer(email: str) -> str:
return email.lower().strip()


def name_normalizer(name: str) -> str:
"""
Normalize a name by changing its capitalization. We also remove trailing spaces.
This function is intended to be used as a Pydantic validator:
https://pydantic-docs.helpmanual.io/usage/validators/#reuse-validators
"""
return name.strip().title()


def trailing_spaces_remover(value: str | None) -> str | None:
"""
Remove trailing spaces.
Expand Down
4 changes: 2 additions & 2 deletions tests/test_booking.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ def test_get_user_bookings_manage_confirmed(client: TestClient) -> None:
)
assert response.status_code == 200
assert booking_id in [booking["id"] for booking in response.json()]
assert response.json()[0]["applicant"].get("name", None) == simple_user.name
assert response.json()[0]["applicant"].get("name", None) == simple_user.name.title()
assert response.json()[0]["applicant"].get("email", None) == simple_user.email


Expand All @@ -200,7 +200,7 @@ def test_get_bookings_confirmed(client: TestClient) -> None:
headers={"Authorization": f"Bearer {token_manager}"},
)
assert response.status_code == 200
assert response.json()[0]["applicant"].get("name", None) == simple_user.name
assert response.json()[0]["applicant"].get("name", None) == simple_user.name.title()
assert response.json()[0]["applicant"].get("email", None) is None


Expand Down
4 changes: 2 additions & 2 deletions tests/test_phonebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -523,8 +523,8 @@ def test_add_membership_admin_with_president_tag(client: TestClient):
user_simple3 = members[0]

assert user_simple3["id"] == phonebook_user_simple3.id
assert user_simple3["name"] == phonebook_user_simple3.name
assert user_simple3["firstname"] == phonebook_user_simple3.firstname
assert user_simple3["name"] == phonebook_user_simple3.name.title()
assert user_simple3["firstname"] == phonebook_user_simple3.firstname.title()
assert user_simple3["email"] == phonebook_user_simple3.email
assert len(user_simple3["memberships"]) == 1
assert user_simple3["memberships"][0]["association_id"] == association3.id
Expand Down
3 changes: 2 additions & 1 deletion tests/test_schools.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,8 @@ def test_create_user_corresponding_to_school(
user = next(
user
for user in users.json()
if user["firstname"] == "new_user_firstname" and user["name"] == "new_user_name"
if user["firstname"] == "new_user_firstname".title()
and user["name"] == "new_user_name".title()
)

user_detail = client.get(
Expand Down
4 changes: 3 additions & 1 deletion tests/test_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,9 @@ def test_create_and_activate_user(
"/users/",
headers={"Authorization": f"Bearer {token_admin_user}"},
)
user = next(user for user in users.json() if user["name"] == email.split("@")[0])
user = next(
user for user in users.json() if user["name"] == email.split("@")[0].title()
)
assert user is not None
assert user["account_type"] == expected_account_type.value

Expand Down
Loading