Files
aiturk-hermes-ide/tests/tui_gateway/test_chrome_viewer_fanout.py
T

45 lines
1.6 KiB
Python

"""The desktop and browser must see the same events, without duplicating replay."""
from tui_gateway import event_replay, server
class Viewer:
def __init__(self, fail=False):
self.frames = []
self.fail = fail
def write(self, frame):
if self.fail:
raise OSError("disconnected")
self.frames.append(frame)
return True
def test_event_reaches_both_viewers_once_and_is_recorded_once(monkeypatch):
desktop, chrome = Viewer(), Viewer()
monkeypatch.setattr(server, "_sessions", {"browser-test": {
"transport": chrome, "viewers": {desktop: 1, chrome: 2},
}})
event_replay.reset_replay_state()
try:
frame = server._event_frame("message.delta", "browser-test", {"text": "İki yüzey"})
assert server.write_json(frame)
assert desktop.frames == chrome.frames == [frame]
assert event_replay.latest_seq("browser-test") == 1
assert len(event_replay.events_since("browser-test", 0)) == 1
finally:
event_replay.reset_replay_state()
def test_closed_primary_does_not_hide_events_from_remaining_viewer(monkeypatch):
desktop, chrome = Viewer(), Viewer(fail=True)
monkeypatch.setattr(server, "_sessions", {"browser-test": {
"transport": chrome, "viewers": {desktop: 1, chrome: 2},
}})
event_replay.reset_replay_state()
try:
frame = server._event_frame("approval.request", "browser-test", {"request_id": "test"})
assert server.write_json(frame)
assert desktop.frames == [frame]
finally:
event_replay.reset_replay_state()