diff --git a/cuenca_validations/types/requests.py b/cuenca_validations/types/requests.py index 8a2dfd50..63f08cc5 100644 --- a/cuenca_validations/types/requests.py +++ b/cuenca_validations/types/requests.py @@ -519,6 +519,15 @@ class UserUpdateRequest(BaseRequest): monthly_movements_type: Optional[MonthlyMovementsType] = None monthly_spending_type: Optional[MonthlySpendingType] = None income_type: Optional[IncomeType] = None + phone_number: Optional[PhoneNumber] = None + email_address: Optional[EmailStr] = None + + @model_validator(mode="before") + @classmethod + def check_at_least_one_param(cls, values: DictStrAny) -> DictStrAny: + if not values: + raise ValueError('At least one parameter must be provided') + return values @field_validator('beneficiaries') @classmethod diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index f43fee12..e978fcc5 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.19' +__version__ = '2.1.20' diff --git a/tests/test_requests.py b/tests/test_requests.py index 95446313..9ca6ae90 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -1,7 +1,10 @@ import pytest from pydantic import ValidationError -from cuenca_validations.types.requests import UserTOSAgreementRequest +from cuenca_validations.types.requests import ( + UserTOSAgreementRequest, + UserUpdateRequest, +) from cuenca_validations.typing import DictStrAny @@ -29,3 +32,15 @@ def test_file_cuenca_url_invalid() -> None: ) with pytest.raises(ValidationError): UserTOSAgreementRequest(**request_data) + + +def test_update_user_requires_at_least_one_param(): + with pytest.raises(ValueError) as ex: + UserUpdateRequest() + assert 'At least one parameter must be provided' in str(ex.value) + + +def test_extra_params_are_not_allowed(): + with pytest.raises(ValueError) as ex: + UserUpdateRequest(foo='bar') + assert 'Extra inputs are not permitted' in str(ex.value)