diff --git a/tests/test_tui_gateway_server.py b/tests/test_tui_gateway_server.py index 76e0bb4f57..6d448a34f4 100644 --- a/tests/test_tui_gateway_server.py +++ b/tests/test_tui_gateway_server.py @@ -403,6 +403,34 @@ def test_session_title_get_retries_persist_for_pending_title(monkeypatch): server._sessions.pop("sid", None) +def test_session_title_get_retries_pending_even_when_db_has_title(monkeypatch): + class _FakeDB: + def __init__(self): + self.title = "auto title" + + def get_session_title(self, _key): + return self.title + + def set_session_title(self, _key, title): + self.title = title + return True + + def get_session(self, _key): + return {"id": _key, "title": self.title} + + db = _FakeDB() + server._sessions["sid"] = _session(pending_title="queued title") + monkeypatch.setattr(server, "_get_db", lambda: db) + try: + resp = server.handle_request( + {"id": "1", "method": "session.title", "params": {"session_id": "sid"}} + ) + assert resp["result"]["title"] == "queued title" + assert server._sessions["sid"]["pending_title"] is None + finally: + server._sessions.pop("sid", None) + + def test_session_title_rejects_empty_title_with_specific_error_code(monkeypatch): class _FakeDB: def get_session_title(self, _key): diff --git a/tui_gateway/server.py b/tui_gateway/server.py index acc91c3baa..601c90b41e 100644 --- a/tui_gateway/server.py +++ b/tui_gateway/server.py @@ -1766,7 +1766,7 @@ def _(rid, params: dict) -> dict: fallback = session.get("pending_title") or "" try: resolved_title = db.get_session_title(key) or "" - if not resolved_title and fallback: + if fallback: if db.set_session_title(key, fallback): session["pending_title"] = None resolved_title = fallback @@ -1776,7 +1776,7 @@ def _(rid, params: dict) -> dict: if existing_title == fallback: session["pending_title"] = None resolved_title = fallback - else: + elif not resolved_title: resolved_title = fallback elif resolved_title: session["pending_title"] = None