from nexus.evennia_event_adapter import actor_located, command_issued, command_result, room_snapshot, session_bound from nexus.perception_adapter import ws_to_perception def test_session_bound_schema(): event = session_bound("sess-1") assert event["type"] == "evennia.session_bound" assert event["hermes_session_id"] == "sess-1" assert event["evennia_account"] == "Timmy" def test_room_snapshot_schema(): event = room_snapshot( room_key="Chapel", title="Chapel", desc="Quiet room.", exits=[{"key": "courtyard", "destination_id": "Courtyard", "destination_key": "Courtyard"}], objects=[{"id": "Book of the Soul", "key": "Book of the Soul", "short_desc": "A doctrinal anchor."}], ) assert event["type"] == "evennia.room_snapshot" assert event["title"] == "Chapel" assert event["objects"][0]["key"] == "Book of the Soul" def test_evennia_room_snapshot_becomes_perception(): perception = ws_to_perception( room_snapshot( room_key="Workshop", title="Workshop", desc="Tools everywhere.", exits=[{"key": "courtyard", "destination_id": "Courtyard", "destination_key": "Courtyard"}], objects=[{"id": "Workbench", "key": "Workbench", "short_desc": "A broad workbench."}], ) ) assert perception is not None assert "Workshop" in perception.description assert "Workbench" in perception.description def test_evennia_command_result_becomes_perception(): perception = ws_to_perception(command_result("sess-2", "Timmy", "look Book of the Soul", "Book of the Soul. A doctrinal anchor.", True)) assert perception is not None assert "succeeded" in perception.description.lower() assert "Book of the Soul" in perception.description def test_evennia_actor_located_becomes_perception(): perception = ws_to_perception(actor_located("Timmy", "Gate")) assert perception is not None assert "Gate" in perception.description def test_evennia_command_issued_schema(): event = command_issued("sess-3", "Timmy", "chapel") assert event["type"] == "evennia.command_issued" assert event["command_text"] == "chapel"