cuenca-validations 2.1.48.dev2__tar.gz → 2.1.49__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/__init__.py +4 -2
  3. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/enums.py +5 -0
  4. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/requests.py +25 -3
  5. cuenca_validations-2.1.49/cuenca_validations/version.py +1 -0
  6. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations.egg-info/PKG-INFO +1 -1
  7. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_requests.py +44 -0
  8. cuenca_validations-2.1.48.dev2/cuenca_validations/version.py +0 -1
  9. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/LICENSE +0 -0
  10. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/README.md +0 -0
  11. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/__init__.py +0 -0
  12. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/card_bins.py +0 -0
  13. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/errors.py +0 -0
  14. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/py.typed +0 -0
  15. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/card.py +0 -0
  16. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/files.py +0 -0
  17. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/general.py +0 -0
  18. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/helpers.py +0 -0
  19. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/identities.py +0 -0
  20. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/setup.py +0 -0
  30. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_statement.py +0 -0
  35. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_types.py +0 -0
  36. {cuenca_validations-2.1.48.dev2 → cuenca_validations-2.1.49}/tests/test_validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.48.dev2
3
+ Version: 2.1.49
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -83,7 +83,6 @@ __all__ = [
83
83
  'Profession',
84
84
  'QueryParams',
85
85
  'ReferencedClabeRequest',
86
- 'RejectTransferOrderRequest',
87
86
  'LegalRfc',
88
87
  'Rfc',
89
88
  'QuestionnairesRequest',
@@ -114,6 +113,8 @@ __all__ = [
114
113
  'TransferOrderStatus',
115
114
  'TransferQuery',
116
115
  'TransferRequest',
116
+ 'UpdateTransferOrderRequest',
117
+ 'UpdateTransferOrderStatus',
117
118
  'UpdateTransferRequest',
118
119
  'UserCardNotification',
119
120
  'UserCredentialRequest',
@@ -191,6 +192,7 @@ from .enums import (
191
192
  TransactionStatus,
192
193
  TransferNetwork,
193
194
  TransferOrderStatus,
195
+ UpdateTransferOrderStatus,
194
196
  UserCardNotification,
195
197
  UserStatus,
196
198
  UserType,
@@ -280,7 +282,6 @@ from .requests import (
280
282
  PlatformRequest,
281
283
  QuestionnairesRequest,
282
284
  ReferencedClabeRequest,
283
- RejectTransferOrderRequest,
284
285
  SavingRequest,
285
286
  SavingUpdateRequest,
286
287
  SessionRequest,
@@ -289,6 +290,7 @@ from .requests import (
289
290
  TransferOrderLineRequest,
290
291
  TransferOrderRequest,
291
292
  TransferRequest,
293
+ UpdateTransferOrderRequest,
292
294
  UpdateTransferRequest,
293
295
  UserCredentialRequest,
294
296
  UserCredentialUpdateRequest,
@@ -768,3 +768,8 @@ class TransferOrderStatus(str, Enum):
768
768
  authorized = 'authorized'
769
769
  rejected = 'rejected'
770
770
  expired = 'expired'
771
+
772
+
773
+ class UpdateTransferOrderStatus(str, Enum):
774
+ authorized = 'authorized'
775
+ rejected = 'rejected'
@@ -50,6 +50,7 @@ from ..types.enums import (
50
50
  TrackDataMethod,
51
51
  TransactionStatus,
52
52
  TransactionTokenValidationStatus,
53
+ UpdateTransferOrderStatus,
53
54
  UserCardNotification,
54
55
  UserStatus,
55
56
  VerificationStatus,
@@ -1068,11 +1069,32 @@ class TransferOrderRequest(BaseRequest):
1068
1069
  return self
1069
1070
 
1070
1071
 
1071
- class RejectTransferOrderRequest(BaseRequest):
1072
- rejection_reason: str
1072
+ class UpdateTransferOrderRequest(BaseRequest):
1073
+ status: UpdateTransferOrderStatus
1074
+ rejection_reason: Optional[str] = None
1073
1075
 
1074
1076
  model_config = ConfigDict(
1075
1077
  json_schema_extra={
1076
- 'example': {'rejection_reason': 'Monto incorrecto'},
1078
+ 'examples': [
1079
+ {'status': 'authorized'},
1080
+ {
1081
+ 'status': 'rejected',
1082
+ 'rejection_reason': 'Monto incorrecto',
1083
+ },
1084
+ ]
1077
1085
  },
1078
1086
  )
1087
+
1088
+ @model_validator(mode='after')
1089
+ def validate_rejection_reason(self) -> 'UpdateTransferOrderRequest':
1090
+ if self.status is UpdateTransferOrderStatus.rejected:
1091
+ if (
1092
+ self.rejection_reason is None
1093
+ or not self.rejection_reason.strip()
1094
+ ):
1095
+ raise ValueError('rejection_reason is required')
1096
+ elif self.rejection_reason is not None:
1097
+ raise ValueError(
1098
+ 'rejection_reason is only allowed when status is rejected'
1099
+ )
1100
+ return self
@@ -0,0 +1 @@
1
+ __version__ = '2.1.49'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.48.dev2
3
+ Version: 2.1.49
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -5,6 +5,7 @@ from pydantic_extra_types.phone_numbers import PhoneNumber
5
5
  from cuenca_validations.types.enums import (
6
6
  Country,
7
7
  OperatorRole,
8
+ UpdateTransferOrderStatus,
8
9
  VerificationType,
9
10
  )
10
11
  from cuenca_validations.types.queries import OperatorQuery
@@ -15,6 +16,7 @@ from cuenca_validations.types.requests import (
15
16
  OperatorUpdateRequest,
16
17
  PasswordResetRequest,
17
18
  TransferOrderRequest,
19
+ UpdateTransferOrderRequest,
18
20
  UpdateTransferRequest,
19
21
  UserTOSAgreementRequest,
20
22
  UserUpdateRequest,
@@ -259,3 +261,45 @@ def test_transfer_order_request_shape() -> None:
259
261
  )
260
262
  with pytest.raises(ValidationError):
261
263
  TransferOrderRequest.model_validate({'idempotency_key': 'missing'})
264
+
265
+
266
+ @pytest.mark.parametrize(
267
+ 'payload',
268
+ [
269
+ {'status': 'rejected'},
270
+ {'status': 'rejected', 'rejection_reason': ''},
271
+ {'status': 'rejected', 'rejection_reason': ' '},
272
+ ],
273
+ )
274
+ def test_update_transfer_order_request_rejected_requires_reason(
275
+ payload: dict,
276
+ ) -> None:
277
+ with pytest.raises(ValidationError, match='rejection_reason is required'):
278
+ UpdateTransferOrderRequest.model_validate(payload)
279
+
280
+
281
+ def test_update_transfer_order_request_authorized_forbids_reason() -> None:
282
+ with pytest.raises(
283
+ ValidationError,
284
+ match='rejection_reason is only allowed when status is rejected',
285
+ ):
286
+ UpdateTransferOrderRequest.model_validate(
287
+ {'status': 'authorized', 'rejection_reason': 'no'}
288
+ )
289
+
290
+
291
+ @pytest.mark.parametrize(
292
+ 'payload, status',
293
+ [
294
+ ({'status': 'authorized'}, UpdateTransferOrderStatus.authorized),
295
+ (
296
+ {'status': 'rejected', 'rejection_reason': 'Monto incorrecto'},
297
+ UpdateTransferOrderStatus.rejected,
298
+ ),
299
+ ],
300
+ )
301
+ def test_update_transfer_order_request_valid(
302
+ payload: dict, status: UpdateTransferOrderStatus
303
+ ) -> None:
304
+ req = UpdateTransferOrderRequest.model_validate(payload)
305
+ assert req.status is status
@@ -1 +0,0 @@
1
- __version__ = '2.1.48.dev2'