def set_readonly_props(self) -> None: if not hasattr(self, 'start_date') \ or not hasattr(self, 'end_date') \ or not hasattr(self, 'start_price') \ or not hasattr(self, 'end_price') \ or not hasattr(self, 'no_of_shares') \ or not hasattr(self, 'action'): return delta: timedelta = DateUtils.get_diff(self._end_date, self._start_date) if self._action == AppConsts.ACTION_BUY: self._net_change_in_price = NumberUtils.round(self._end_price - self._start_price) elif self._action == AppConsts.ACTION_SELL: self._net_change_in_price = NumberUtils.round(self._start_price - self._end_price) self._year = self._end_date.year self._quarter = DateUtils.get_quarter(self._end_date.month) self._month = self._end_date.month self._hold_length_days = delta.days if delta else 0 self._change_in_capital = NumberUtils.round(self._net_change_in_price * self._no_of_shares) self._has_profit = (self._change_in_capital > 0)
def test_get_quarter_should_return_appropriately(self) -> None: # ARRANGE less_than_1_case: int = 0 more_than_12_case: int = 13 invalid_type_case: str = 'foo' january_case: int = 1 february_case: int = 2 march_case: int = 3 april_case: int = 4 may_case: int = 5 june_case: int = 6 july_case: int = 7 august_case: int = 8 september_case: int = 9 october_case: int = 10 november_case: int = 11 december_case: int = 12 # ACT ret_less_than_1_case: int = DateUtils.get_quarter(less_than_1_case) ret_more_than_12_case: int = DateUtils.get_quarter(more_than_12_case) ret_invalid_type_case: int = DateUtils.get_quarter(invalid_type_case) ret_january_case: int = DateUtils.get_quarter(january_case) ret_february_case: int = DateUtils.get_quarter(february_case) ret_march_case: int = DateUtils.get_quarter(march_case) ret_april_case: int = DateUtils.get_quarter(april_case) ret_may_case: int = DateUtils.get_quarter(may_case) ret_june_case: int = DateUtils.get_quarter(june_case) ret_july_case: int = DateUtils.get_quarter(july_case) ret_august_case: int = DateUtils.get_quarter(august_case) ret_september_case: int = DateUtils.get_quarter(september_case) ret_october_case: int = DateUtils.get_quarter(october_case) ret_november_case: int = DateUtils.get_quarter(november_case) ret_december_case: int = DateUtils.get_quarter(december_case) # ASSERT self.assertIsNone(ret_less_than_1_case) self.assertIsNone(ret_more_than_12_case) self.assertIsNone(ret_invalid_type_case) self.assertEqual(ret_january_case, 1) self.assertEqual(ret_february_case, 1) self.assertEqual(ret_march_case, 1) self.assertEqual(ret_april_case, 2) self.assertEqual(ret_may_case, 2) self.assertEqual(ret_june_case, 2) self.assertEqual(ret_july_case, 3) self.assertEqual(ret_august_case, 3) self.assertEqual(ret_september_case, 3) self.assertEqual(ret_october_case, 4) self.assertEqual(ret_november_case, 4) self.assertEqual(ret_december_case, 4)