Files
the-nexus/tests/test_evennia_ws_bridge.py

37 lines
1.7 KiB
Python
Raw Normal View History

from nexus.evennia_ws_bridge import clean_lines, normalize_event, parse_room_output, strip_ansi
def test_strip_ansi_removes_escape_codes():
assert strip_ansi('\x1b[1mGate\x1b[0m') == 'Gate'
def test_parse_room_output_extracts_room_exits_and_objects():
parsed = parse_room_output('\x1b[1mChapel\x1b[0m\nQuiet room.\nExits: courtyard\nYou see: a Book of the Soul and a Prayer Wall')
assert parsed['title'] == 'Chapel'
assert parsed['exits'][0]['key'] == 'courtyard'
keys = [obj['key'] for obj in parsed['objects']]
assert 'Book of the Soul' in keys
assert 'Prayer Wall' in keys
def test_normalize_connect_emits_session_and_room_events():
events = normalize_event({'event': 'connect', 'actor': 'Timmy', 'output': 'Gate\nA threshold.\nExits: enter'}, 'sess1')
types = [event['type'] for event in events]
assert 'evennia.session_bound' in types
assert 'evennia.actor_located' in types
assert 'evennia.room_snapshot' in types
def test_normalize_command_emits_command_and_snapshot():
events = normalize_event({'event': 'command', 'actor': 'timmy', 'command': 'courtyard', 'output': 'Courtyard\nOpen court.\nExits: gate, workshop\nYou see: a Map Table'}, 'sess2')
types = [event['type'] for event in events]
assert types[0] == 'evennia.command_issued'
assert 'evennia.command_result' in types
assert 'evennia.room_snapshot' in types
def test_normalize_failed_command_marks_failure():
events = normalize_event({'event': 'command', 'actor': 'timmy', 'command': 'workshop', 'output': "Command 'workshop' is not available."}, 'sess3')
result = [event for event in events if event['type'] == 'evennia.command_result'][0]
assert result['success'] is False