import pytest from hermes_state import SessionDB @pytest.fixture def db(tmp_path): database = SessionDB(tmp_path / "state.db") try: yield database finally: database.close() def test_hidden_excluded_by_default_included_on_request(db): db.create_session("visible", source="cli") db.create_session("secret", source="cli") # Give both a message so the default min_message_count filter keeps them. for sid in ("visible", "secret"): db._conn.execute( "UPDATE sessions SET message_count = 1 WHERE id = ?", (sid,) ) db._conn.commit() # Flip the hidden flag on one session. assert db.set_session_hidden("secret", True) is True assert db.get_session("secret")["hidden"] == 1 assert db.get_session("visible")["hidden"] == 0 # Default listing drops the hidden row; include_hidden=True surfaces it. default_ids = {s["id"] for s in db.list_sessions_rich(min_message_count=1)} assert default_ids == {"visible"} all_ids = { s["id"] for s in db.list_sessions_rich(min_message_count=1, include_hidden=True) } assert all_ids == {"visible", "secret"} # Unhiding brings it back into the default listing. assert db.set_session_hidden("secret", False) is True assert db.get_session("secret")["hidden"] == 0 unhidden_ids = {s["id"] for s in db.list_sessions_rich(min_message_count=1)} assert unhidden_ids == {"visible", "secret"}