@ -1311,6 +1311,52 @@ class ReviewFlowDraftTests(unittest.IsolatedAsyncioTestCase):
self . assertEqual ( registry . calls [ 0 ] [ 1 ] [ " data_hora " ] , " 18/08/2026 10:00 " )
self . assertIn ( " REV-TESTE-123 " , final_response )
async def test_review_flow_reuses_vehicle_with_relative_date_only_and_requests_missing_time ( self ) :
state = FakeState (
entries = {
" pending_review_reuse_confirmations " : {
21 : {
" payload " : {
" placa " : " ABC1263 " ,
" modelo " : " Onix " ,
" ano " : 2024 ,
" km " : 50000 ,
" revisao_previa_concessionaria " : False ,
} ,
" expires_at " : datetime . utcnow ( ) + timedelta ( minutes = 30 ) ,
}
}
}
)
registry = FakeRegistry ( )
flow = ReviewFlowHarness ( state = state , registry = registry )
today_text = datetime . now ( ) . strftime ( " %d / % m/ % Y " )
response = await flow . _try_collect_and_schedule_review (
message = " eu gostaria de marcar para hoje " ,
user_id = 21 ,
extracted_fields = { } ,
intents = { } ,
turn_decision = { " intent " : " review_schedule " , " domain " : " review " , " action " : " collect_review_schedule " } ,
)
draft = state . get_entry ( " pending_review_drafts " , 21 )
self . assertIsNotNone ( draft )
self . assertEqual ( draft [ " payload " ] . get ( " data_hora_base " ) , today_text )
self . assertIn ( " Agora me informe o horario desejado " , response )
final_response = await flow . _try_collect_and_schedule_review (
message = " as 14 horas " ,
user_id = 21 ,
extracted_fields = { } ,
intents = { } ,
turn_decision = { " intent " : " review_schedule " , " domain " : " review " , " action " : " collect_review_schedule " } ,
)
self . assertEqual ( registry . calls [ 0 ] [ 0 ] , " agendar_revisao " )
self . assertEqual ( registry . calls [ 0 ] [ 1 ] [ " data_hora " ] , f " { today_text } 14:00 " )
self . assertIn ( " REV-TESTE-123 " , final_response )
async def test_review_flow_clears_stale_pending_confirmation_when_user_starts_new_schedule ( self ) :
state = FakeState (
entries = {