Coverage for website/payments/tests/__mocks__.py: 100.00%

58 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from unittest.mock import MagicMock 

2 

3from django.utils.functional import classproperty 

4 

5from payments.payables import Payable 

6 

7 

8class MockManager: 

9 pass 

10 

11 

12class MockModel: 

13 class Meta: 

14 app_label = "mock_app" 

15 model_name = "mock_model" 

16 

17 payment = None 

18 pk = 1 

19 test_field = "" 

20 _meta = Meta() 

21 objects = MockManager() 

22 

23 def __init__( 

24 self, 

25 payer, 

26 amount=5, 

27 topic="mock topic", 

28 notes="mock notes", 

29 payment=None, 

30 can_manage=True, 

31 paying_allowed=True, 

32 ) -> None: 

33 self.payer = payer 

34 self.amount = amount 

35 self.topic = topic 

36 self.notes = notes 

37 self.payment = payment 

38 self.can_manage = can_manage 

39 self.paying_allowed = paying_allowed 

40 

41 # Because we have to do as if this is a model sometimes 

42 self.verbose_name = "MockPayable" 

43 self.verbose_name_plural = self.verbose_name + "s" 

44 

45 def save(self): 

46 pass 

47 

48 def refresh_from_db(self): 

49 pass 

50 

51 

52class MockPayable(Payable): 

53 save = MagicMock() 

54 verbose_name = "MockPayable" 

55 verbose_name_plural = "MockPayables" 

56 

57 @property 

58 def payment_amount(self): 

59 return self.model.amount 

60 

61 @property 

62 def payment_topic(self): 

63 return self.model.topic 

64 

65 @property 

66 def payment_notes(self): 

67 return self.model.notes 

68 

69 @property 

70 def payment_payer(self): 

71 return self.model.payer 

72 

73 @property 

74 def paying_allowed(self): 

75 return self.model.paying_allowed 

76 

77 def can_manage_payment(self, member): 

78 return self.model.can_manage 

79 

80 @classproperty 

81 def immutable_after_payment(self): 

82 return False 

83 

84 @classproperty 

85 def immutable_foreign_key_models(self): 

86 return {} 

87 

88 @classproperty 

89 def immutable_model_fields_after_payment(self): 

90 return []