Coverage for src/orders/constants.py: 100%
28 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
1class CardFieldLengths:
2 CARD_NUMBER_MAX_LENGTH = 19
3 CARD_NUMBER_EXACT_LENGTH = 16
5 CARD_HOLDER_NAME_MAX_LENGTH = 50
6 CARD_HOLDER_NAME_MIN_LENGTH = 2
8 EXPIRY_DATE_MAX_LENGTH = 5
9 EXPIRY_DATE_EXACT_LENGTH = 5
11 CVV_MAX_LENGTH = 3
12 CVV_EXACT_LENGTH = 3
15class CardErrorMessages:
16 INVALID_CARD_NUMBER = 'Please enter a valid card number'
18 INVALID_CARD_HOLDER_NAME = 'Please enter a valid name'
20 INVALID_CVV_CODE = 'Please enter a valid security code'
22 INVALID_EXPIRY_DATE = 'Please enter a valid expiry date (MM/YY)'
24 CARD_HAS_EXPIRED = 'Card has expired'
27class CardRegexPatterns:
28 VISA = r'^4[0-9]{3} [0-9]{4} [0-9]{4} [0-9]{4}$'
29 MASTERCARD_LEGACY = r'^5[1-5][0-9]{2} [0-9]{4} [0-9]{4} [0-9]{4}$'
30 MASTERCARD_NEW = r'^(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720) [0-9]{4} [0-9]{4} [0-9]{4}$'
31 CVV = rf'^[0-9]{{{CardFieldLengths.CVV_EXACT_LENGTH}}}$'
32 EXPIRY_DATE = r'^(0[1-9]|1[0-2])/([0-9]{2})$'
33 CARD_HOLDER = rf"^[A-Za-z\u00C0-\u024F'\- ]{{{CardFieldLengths.CARD_HOLDER_NAME_MIN_LENGTH},{CardFieldLengths.CARD_HOLDER_NAME_MAX_LENGTH}}}$"
36class OrderStatusMessages:
37 STATUS_CREATED = 'Order completed successfully'
38 STATUS_NO_ORDERS = 'No orders created'
41class OrderErrorMessages:
42 ERROR_INVALID_CONTENT_TYPE_OR_ID = 'Invalid content type or object ID'
43 ERROR_REVIEW_NOT_FOUND = 'Review not found'