feat(execution): reconcile timed-out orders safely
This commit is contained in:
@@ -75,14 +75,14 @@ class TestIntentPayloadParsing:
|
||||
assert slot.timeout_sec == 60
|
||||
assert slot.slippage_pct == 1.0
|
||||
|
||||
def test_buy_policy_fields_absent_means_none(self):
|
||||
"""Backward-compat: no policy fields in payload → None on slot."""
|
||||
def test_buy_policy_fields_absent_uses_hard_fallback(self):
|
||||
"""No policy field still receives the hard 3,600-second fallback."""
|
||||
repo, _, intents = _wire()
|
||||
handler = make_intent_rpc_handler(intents)
|
||||
resp = handler(_buy_req())
|
||||
sid = UUID(resp.payload["slot_id"])
|
||||
slot = repo.fetch_slot(sid)
|
||||
assert slot.timeout_sec is None
|
||||
assert slot.timeout_sec == 3600
|
||||
assert slot.slippage_pct is None
|
||||
|
||||
def test_sell_timeout_sec_parsed(self):
|
||||
@@ -166,13 +166,13 @@ class TestDefaultOrderTimeoutSec:
|
||||
slot = repo.fetch_slot(d.slot_id)
|
||||
assert slot.timeout_sec == 30
|
||||
|
||||
def test_no_config_default_no_intent_timeout_means_none(self):
|
||||
def test_no_config_default_no_intent_timeout_uses_hard_fallback(self):
|
||||
repo, _, intents = self._wire_with_default(default_timeout=None)
|
||||
d = intents.submit_buy(BuyIntent(
|
||||
intent_id="b1", portfolio_id="PF-1", qty=10,
|
||||
))
|
||||
slot = repo.fetch_slot(d.slot_id)
|
||||
assert slot.timeout_sec is None
|
||||
assert slot.timeout_sec == 3600
|
||||
|
||||
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user