diff --git a/cuenca_validations/types/queries.py b/cuenca_validations/types/queries.py index 15fd8680..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 @@ -157,6 +158,7 @@ class UserQuery(QueryParams): 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..8c6f5bc8 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.35' +__version__ = '2.1.35.dev2' diff --git a/tests/test_types.py b/tests/test_types.py index 3282e59b..d6a9c210 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -247,6 +247,39 @@ 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_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)]) + + +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')