diff --git a/flumine/order/order.py b/flumine/order/order.py index 1aa6d795..b37bfee3 100644 --- a/flumine/order/order.py +++ b/flumine/order/order.py @@ -594,14 +594,14 @@ def _polarity(self): @property def average_price_matched(self) -> float: try: - return self.current_order.get("matched_price", 0) + return self.current_order.get("matched_price", 0) or 0.0 except AttributeError: return 0.0 @property def size_matched(self) -> float: try: - return self.current_order.get("matched_size", 0) + return self.current_order.get("matched_size", 0) or 0.0 except AttributeError: return 0.0 @@ -610,9 +610,9 @@ def size_remaining(self): if self.current_order.get("status") in ["Settled", "Cancelled", "Void"]: return 0.0 if "size_remaining" in self.current_order: - return self.current_order.get("size_remaining", 0) + return self.current_order.get("size_remaining", 0) or 0.0 try: - return self.current_order.get("remaining_size", 0) + return self.current_order.get("remaining_size", 0) or 0.0 except AttributeError: return self.order_type.size diff --git a/tests/test_order.py b/tests/test_order.py index 2006f093..7eeec8db 100644 --- a/tests/test_order.py +++ b/tests/test_order.py @@ -757,12 +757,24 @@ def test_average_price_matched(self): self.order.responses.current_order = mock_current_order self.assertEqual(self.order.average_price_matched, 12.3) + def test_average_price_matched_none(self): + self.assertEqual(self.order.average_price_matched, 0) + mock_current_order = {"matched_price": None} + self.order.responses.current_order = mock_current_order + self.assertEqual(self.order.average_price_matched, 0.0) + def test_size_matched(self): self.assertEqual(self.order.size_matched, 0) mock_current_order = {"matched_size": 12} self.order.responses.current_order = mock_current_order self.assertEqual(self.order.size_matched, 12) + def test_size_matched_none(self): + self.assertEqual(self.order.size_matched, 0) + mock_current_order = {"matched_size": None} + self.order.responses.current_order = mock_current_order + self.assertEqual(self.order.size_matched, 0.0) + def test_size_remaining(self): self.mock_order_type.ORDER_TYPE = OrderTypes.LIMIT self.mock_order_type.size = 0 @@ -778,6 +790,15 @@ def test_size_remaining(self): self.order.responses.current_order = mock_current_order self.assertEqual(self.order.size_remaining, 0.0) + def test_size_remaining_none(self): + self.mock_order_type.ORDER_TYPE = OrderTypes.LIMIT + self.mock_order_type.size = 0 + self.mock_order_type.bet_target_size = 0 + self.assertEqual(self.order.size_remaining, 0) + mock_current_order = {"size_remaining": None} + self.order.responses.current_order = mock_current_order + self.assertEqual(self.order.size_remaining, 0.0) + def test_size_cancelled(self): self.assertEqual(self.order.size_cancelled, 0)