From 3eb12ba70d0a2ee1583d63eaa5fdb6f118977cc0 Mon Sep 17 00:00:00 2001 From: Juliette Date: Thu, 28 May 2026 18:14:47 -0600 Subject: [PATCH 1/2] Enhance UserQuery model with optional ids and is_blocked fields --- cuenca_validations/types/queries.py | 2 ++ cuenca_validations/version.py | 2 +- tests/test_types.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cuenca_validations/types/queries.py b/cuenca_validations/types/queries.py index 15fd8680..14631184 100644 --- a/cuenca_validations/types/queries.py +++ b/cuenca_validations/types/queries.py @@ -154,9 +154,11 @@ class WalletTransactionQuery(QueryParams): class UserQuery(QueryParams): + ids: Optional[list[str]] = Field(default=None, max_length=MAX_PAGE_SIZE) phone_number: Optional[str] = None email_address: Optional[EmailStr] = None status: Optional[UserStatus] = None + is_blocked: Optional[bool] = None identity_uri: Optional[str] = None has_curp_document: Optional[bool] = None clabe: Optional[Clabe] = None diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index 0433f6dd..ae372bdc 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.35' +__version__ = '2.1.35.dev1' diff --git a/tests/test_types.py b/tests/test_types.py index 3282e59b..e07dde75 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -247,6 +247,34 @@ def test_user_query_rejects_invalid(field, value): UserQuery(**{field: value}) +def test_user_query_accepts_ids_and_is_blocked(): + query = UserQuery(ids=['US1', 'US2'], is_blocked=True) + assert query.ids == ['US1', 'US2'] + assert query.is_blocked is True + dumped = query.model_dump(exclude_none=True) + assert dumped['ids'] == ['US1', 'US2'] + assert dumped['is_blocked'] is True + assert isinstance(dumped['ids'], list) + + +def test_user_query_rejects_ids_over_limit(): + with pytest.raises(ValidationError): + UserQuery(ids=[f'US{i}' for i in range(101)]) + + +def test_user_query_ids_empty_list_ok(): + query = UserQuery(ids=[]) + assert query.ids == [] + assert 'ids' in query.model_dump(exclude_none=True) + + +def test_user_query_ids_none_excluded_from_dump(): + query = UserQuery() + dumped = query.model_dump(exclude_none=True) + assert 'ids' not in dumped + assert 'is_blocked' not in dumped + + def test_exclude_none_in_dict(): request = ApiKeyUpdateRequest(user_id='US123') assert request.model_dump() == dict(user_id='US123') From e4b8d52a3288ec0f59b64721177754f943d2f59e Mon Sep 17 00:00:00 2001 From: Juliette Date: Tue, 2 Jun 2026 00:15:13 -0600 Subject: [PATCH 2/2] Update version to 2.1.35.dev2 and add optional ids field to QueryParams model --- cuenca_validations/types/queries.py | 2 +- cuenca_validations/version.py | 2 +- tests/test_types.py | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cuenca_validations/types/queries.py b/cuenca_validations/types/queries.py index 14631184..0eda93ee 100644 --- a/cuenca_validations/types/queries.py +++ b/cuenca_validations/types/queries.py @@ -40,6 +40,7 @@ class QueryParams(BaseModel): ] limit: Optional[PositiveInt] = None user_id: Optional[str] = None + ids: Optional[list[str]] = Field(default=None, max_length=MAX_PAGE_SIZE) created_before: Optional[dt.datetime] = None created_after: Optional[dt.datetime] = None related_transaction: Optional[str] = None @@ -154,7 +155,6 @@ class WalletTransactionQuery(QueryParams): class UserQuery(QueryParams): - ids: Optional[list[str]] = Field(default=None, max_length=MAX_PAGE_SIZE) phone_number: Optional[str] = None email_address: Optional[EmailStr] = None status: Optional[UserStatus] = None diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index ae372bdc..8c6f5bc8 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.35.dev1' +__version__ = '2.1.35.dev2' diff --git a/tests/test_types.py b/tests/test_types.py index e07dde75..d6a9c210 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -257,6 +257,11 @@ def test_user_query_accepts_ids_and_is_blocked(): assert isinstance(dumped['ids'], list) +def test_query_params_accepts_ids(): + query = QueryParams(ids=['US1', 'US2']) + assert query.ids == ['US1', 'US2'] + + def test_user_query_rejects_ids_over_limit(): with pytest.raises(ValidationError): UserQuery(ids=[f'US{i}' for i in range(101)])