From 90272e2d466a0096f72fe50016bb1680812ad2df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cabrera?= Date: Wed, 6 May 2026 11:14:16 -0600 Subject: [PATCH 1/3] Update version to 2.1.31.dev0 and add PasswordResetRequest class with validation tests --- cuenca_validations/types/__init__.py | 2 ++ cuenca_validations/types/requests.py | 5 +++ cuenca_validations/version.py | 2 +- tests/test_requests.py | 51 ++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) diff --git a/cuenca_validations/types/__init__.py b/cuenca_validations/types/__init__.py index 8b6d41c1..4fbd542b 100644 --- a/cuenca_validations/types/__init__.py +++ b/cuenca_validations/types/__init__.py @@ -59,6 +59,7 @@ 'MonthlySpendingType', 'PartnerRequest', 'PartnerUpdateRequest', + 'PasswordResetRequest', 'PhoneNumber', 'PlatformRequest', 'PlatformType', @@ -233,6 +234,7 @@ LimitedWalletRequest, PartnerRequest, PartnerUpdateRequest, + PasswordResetRequest, PlatformRequest, QuestionnairesRequest, SavingRequest, diff --git a/cuenca_validations/types/requests.py b/cuenca_validations/types/requests.py index 7a0905d4..f54b1c60 100644 --- a/cuenca_validations/types/requests.py +++ b/cuenca_validations/types/requests.py @@ -455,6 +455,11 @@ class UserTOSAgreementRequest(BaseRequest): signature_image_url: Optional[FileCuencaUrl] = None +class PasswordResetRequest(BaseRequest): + verification_id: str + location: Coordinate + + class UserRequest(BaseRequest): curp: Curp = Field( description=( diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index 9b229b82..50c4b6d3 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.30' +__version__ = '2.1.31.dev0' diff --git a/tests/test_requests.py b/tests/test_requests.py index 516dd7cc..1c42ca85 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -1,9 +1,12 @@ +from typing import Optional + import pytest from pydantic import ValidationError from pydantic_extra_types.phone_numbers import PhoneNumber from cuenca_validations.types.enums import VerificationType from cuenca_validations.types.requests import ( + PasswordResetRequest, UserTOSAgreementRequest, UserUpdateRequest, VerificationRequest, @@ -37,6 +40,54 @@ def test_file_cuenca_url_invalid() -> None: UserTOSAgreementRequest(**request_data) +_VERIFICATION_ID = 'VEKp662Yrf6lMztl0-9qzk7Q' +_VALID_COORDINATE = (19.432607, -99.133209) + + +@pytest.mark.parametrize( + ('payload', 'expected_dump'), + [ + pytest.param( + { + 'verification_id': _VERIFICATION_ID, + 'location': _VALID_COORDINATE, + }, + { + 'verification_id': _VERIFICATION_ID, + 'location': { + 'latitude': 19.432607, + 'longitude': -99.133209, + }, + }, + id='serializes', + ), + pytest.param( + {'location': _VALID_COORDINATE}, + None, + id='missing_verification_id', + ), + pytest.param( + { + 'verification_id': _VERIFICATION_ID, + 'location': (91.0, 0.0), + }, + None, + id='bad_coordinate', + ), + ], +) +def test_password_reset_request( + payload: DictStrAny, + expected_dump: Optional[DictStrAny], +) -> None: + if expected_dump is None: + with pytest.raises(ValidationError): + PasswordResetRequest.model_validate(payload) + else: + req = PasswordResetRequest.model_validate(payload) + assert req.model_dump() == expected_dump + + def test_update_user_requires_at_least_one_param(): with pytest.raises(ValueError) as ex: UserUpdateRequest() From 8a4c897a59f67d718fb45a719749e8d4215b050a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cabrera?= Date: Thu, 7 May 2026 18:09:39 -0600 Subject: [PATCH 2/3] Update version to 2.1.31.dev1, remove verification_id from PasswordResetRequest, and adjust related tests accordingly --- cuenca_validations/types/requests.py | 1 - cuenca_validations/version.py | 2 +- tests/test_requests.py | 57 +++++----------------------- 3 files changed, 10 insertions(+), 50 deletions(-) diff --git a/cuenca_validations/types/requests.py b/cuenca_validations/types/requests.py index f54b1c60..da5d5e2f 100644 --- a/cuenca_validations/types/requests.py +++ b/cuenca_validations/types/requests.py @@ -456,7 +456,6 @@ class UserTOSAgreementRequest(BaseRequest): class PasswordResetRequest(BaseRequest): - verification_id: str location: Coordinate diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index 50c4b6d3..ff903070 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.31.dev0' +__version__ = '2.1.31.dev1' diff --git a/tests/test_requests.py b/tests/test_requests.py index 1c42ca85..cd6a950b 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -1,5 +1,3 @@ -from typing import Optional - import pytest from pydantic import ValidationError from pydantic_extra_types.phone_numbers import PhoneNumber @@ -40,52 +38,15 @@ def test_file_cuenca_url_invalid() -> None: UserTOSAgreementRequest(**request_data) -_VERIFICATION_ID = 'VEKp662Yrf6lMztl0-9qzk7Q' -_VALID_COORDINATE = (19.432607, -99.133209) - - -@pytest.mark.parametrize( - ('payload', 'expected_dump'), - [ - pytest.param( - { - 'verification_id': _VERIFICATION_ID, - 'location': _VALID_COORDINATE, - }, - { - 'verification_id': _VERIFICATION_ID, - 'location': { - 'latitude': 19.432607, - 'longitude': -99.133209, - }, - }, - id='serializes', - ), - pytest.param( - {'location': _VALID_COORDINATE}, - None, - id='missing_verification_id', - ), - pytest.param( - { - 'verification_id': _VERIFICATION_ID, - 'location': (91.0, 0.0), - }, - None, - id='bad_coordinate', - ), - ], -) -def test_password_reset_request( - payload: DictStrAny, - expected_dump: Optional[DictStrAny], -) -> None: - if expected_dump is None: - with pytest.raises(ValidationError): - PasswordResetRequest.model_validate(payload) - else: - req = PasswordResetRequest.model_validate(payload) - assert req.model_dump() == expected_dump +def test_password_reset_request_serializes() -> None: + payload: DictStrAny = {'location': (19.432607, -99.133209)} + req = PasswordResetRequest.model_validate(payload) + assert req.model_dump() == { + 'location': { + 'latitude': 19.432607, + 'longitude': -99.133209, + }, + } def test_update_user_requires_at_least_one_param(): From d790e3220ac6c044c572fac671846f2e38de2eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cabrera?= Date: Fri, 8 May 2026 16:52:52 -0600 Subject: [PATCH 3/3] Update version to 2.1.31 in version.py --- cuenca_validations/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index ff903070..7b061fc7 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.31.dev1' +__version__ = '2.1.31'