4f926fcb10ddd91f8cb4911fb4bafdf4519491a3
[utils.git] / src / budget_sync / test / mock_bug.py
1 from typing import Optional, Union
2 from budget_sync.util import BugStatus
3
4
5 class MockBug:
6 def __init__(self,
7 bug_id: int,
8 cf_budget_parent: Optional[int] = None,
9 cf_budget: str = "0",
10 cf_total_budget: str = "0",
11 cf_nlnet_milestone: Optional[str] = None,
12 cf_payees_list: str = "",
13 summary: str = "<default summary>",
14 status: Union[str, BugStatus] = BugStatus.CONFIRMED,
15 assigned_to: str = "user@example.com",
16 cf_is_in_nlnet_mou2: str = ""):
17 self.id = bug_id
18 self.__budget_parent = cf_budget_parent
19 self.cf_budget = cf_budget
20 self.cf_total_budget = cf_total_budget
21 if cf_nlnet_milestone is None:
22 cf_nlnet_milestone = "---"
23 self.cf_nlnet_milestone = cf_nlnet_milestone
24 self.cf_payees_list = cf_payees_list
25 self.summary = summary
26 self.status = str(status)
27 self.assigned_to = assigned_to
28 self.cf_is_in_nlnet_mou2 = cf_is_in_nlnet_mou2
29
30 @property
31 def cf_budget_parent(self) -> int:
32 if self.__budget_parent is None:
33 raise AttributeError(
34 "'MockBug' object has no attribute 'cf_budget_parent'")
35 return self.__budget_parent
36
37 @cf_budget_parent.setter
38 def cf_budget_parent(self, value: int):
39 if isinstance(value, int):
40 self.__budget_parent = value
41 else:
42 raise TypeError("cf_budget_parent must be an int")
43
44 @cf_budget_parent.deleter
45 def cf_budget_parent(self):
46 self.cf_budget_parent # trigger AttributeError if property cleared
47 self.__budget_parent = None
48
49 def __repr__(self):
50 cf_budget_parent = getattr(self, "cf_budget_parent", None)
51 status = BugStatus.cast(self.status, unknown_allowed=True)
52 return (f"MockBug(bug_id={self.id!r}, "
53 f"cf_budget_parent={cf_budget_parent!r}, "
54 f"cf_budget={self.cf_budget!r}, "
55 f"cf_total_budget={self.cf_total_budget!r}, "
56 f"cf_nlnet_milestone={self.cf_nlnet_milestone!r}, "
57 f"cf_payees_list={self.cf_payees_list!r}, "
58 f"summary={self.summary!r}, "
59 f"status={status!r}, "
60 f"assigned_to={self.assigned_to!r})")