""" Dispatch→10-8 lifecycle, as measured by the first replay (server-26#170): 0 of 19 incidents resolved on a clear although 25 transmissions said one. Three independent breaks, each pinned here. """ from app.internal import incident_correlator as ic from app.internal.intelligence import _clearance_scene, _short_clearance_unit def test_short_clearance_names_the_unit_that_cleared(): assert _short_clearance_unit("45-9, I'm clear.") == "45-9" assert _short_clearance_unit("Vehicle 1, clear.") == "Vehicle 1" assert _short_clearance_unit("11 Adam, clear") == "11 Adam" assert _short_clearance_unit("Car 12 10-8") == "Car 12" def test_short_clearance_never_guesses(): for t in ("10-8, 10-8.", "CMT clear.", "10-8, I'm back now. Clear.", "10-8, thank you.", "Show us 10-8, post 4.", "7, Charlie Central.", "10-4."): assert _short_clearance_unit(t) is None, t def test_clearance_scene_cannot_open_an_incident(): scene = _clearance_scene("45-9, I'm clear.", "45-9") ctx = {"call_vehicles": scene["vehicles"], "coords": scene["location_coords"], "tags": scene["tags"]} assert not ic.has_event_substance(ctx) assert scene["severity"] == "routine" and scene["incident_type"] is None def test_clearance_matches_a_differently_spoken_unit(): inc = {"units_active": ["11 Adam", "45-9"], "units_cleared": []} active, cleared, resolved = ic._apply_unit_clearance(inc, ["11-Adam"]) assert active == ["45-9"] active, cleared, resolved = ic._apply_unit_clearance( {"units_active": active, "units_cleared": cleared}, ["45 9"]) assert active == [] and resolved def test_only_numbered_units_hold_an_incident_open(): for junk in ("Desk", "Central", "Division", "sergeant", "unknown", "John", "Zebra", "10-8", "10 4"): assert not ic._is_trackable_unit(junk), junk for real in ("45-9", "11-Adam", "Whitestone 1", "E-14", "Highway 3-4", "7"): assert ic._is_trackable_unit(real), real