refactor: add rule engine, risk service, quote state machine, and replay tests
This commit is contained in:
42
tests/replay/test_golden_replay.py
Normal file
42
tests/replay/test_golden_replay.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import unittest
|
||||
|
||||
from core.quote_state_machine import QuoteStateMachine
|
||||
|
||||
|
||||
class _State:
|
||||
def __init__(self):
|
||||
self.pending_image_urls = []
|
||||
self.pending_requirements = []
|
||||
self.quote_phase = "idle"
|
||||
self.quote_ready_turns = 0
|
||||
|
||||
|
||||
class GoldenReplayTests(unittest.TestCase):
|
||||
def test_replay_collect_then_ready_then_quote(self):
|
||||
sm = QuoteStateMachine(delay_turns=1)
|
||||
st = _State()
|
||||
|
||||
replay = [
|
||||
{"event": "image", "url": "a.jpg", "want_phase": "collecting"},
|
||||
{"event": "image", "url": "b.jpg", "want_phase": "collecting"},
|
||||
{"event": "finish", "want_phase": "ready_to_quote", "want_defer": True},
|
||||
{"event": "progress", "want_phase": "ready_to_quote", "want_defer": False},
|
||||
]
|
||||
|
||||
for step in replay:
|
||||
if step["event"] == "image":
|
||||
st.pending_image_urls.append(step["url"])
|
||||
sm.refresh(st)
|
||||
self.assertEqual(st.quote_phase, step["want_phase"])
|
||||
elif step["event"] == "finish":
|
||||
deferred = sm.should_defer_batch_quote(st, mark_ready=True)
|
||||
self.assertEqual(st.quote_phase, step["want_phase"])
|
||||
self.assertEqual(deferred, step["want_defer"])
|
||||
elif step["event"] == "progress":
|
||||
deferred = sm.should_defer_batch_quote(st, mark_ready=False)
|
||||
self.assertEqual(st.quote_phase, step["want_phase"])
|
||||
self.assertEqual(deferred, step["want_defer"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main(verbosity=2)
|
||||
Reference in New Issue
Block a user