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

1class CardFieldLengths: 

2 CARD_NUMBER_MAX_LENGTH = 19 

3 CARD_NUMBER_EXACT_LENGTH = 16 

4 

5 CARD_HOLDER_NAME_MAX_LENGTH = 50 

6 CARD_HOLDER_NAME_MIN_LENGTH = 2 

7 

8 EXPIRY_DATE_MAX_LENGTH = 5 

9 EXPIRY_DATE_EXACT_LENGTH = 5 

10 

11 CVV_MAX_LENGTH = 3 

12 CVV_EXACT_LENGTH = 3 

13 

14 

15class CardErrorMessages: 

16 INVALID_CARD_NUMBER = 'Please enter a valid card number' 

17 

18 INVALID_CARD_HOLDER_NAME = 'Please enter a valid name' 

19 

20 INVALID_CVV_CODE = 'Please enter a valid security code' 

21 

22 INVALID_EXPIRY_DATE = 'Please enter a valid expiry date (MM/YY)' 

23 

24 CARD_HAS_EXPIRED = 'Card has expired' 

25 

26 

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}}}$" 

34 

35 

36class OrderStatusMessages: 

37 STATUS_CREATED = 'Order completed successfully' 

38 STATUS_NO_ORDERS = 'No orders created' 

39 

40 

41class OrderErrorMessages: 

42 ERROR_INVALID_CONTENT_TYPE_OR_ID = 'Invalid content type or object ID' 

43 ERROR_REVIEW_NOT_FOUND = 'Review not found'