35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from datetime import datetime
|
|
from types import SimpleNamespace
|
|
from unittest.mock import MagicMock
|
|
|
|
from core.session_manager import SessionManager
|
|
import core.session_manager as SM
|
|
|
|
|
|
def _manager_with(sessions=None):
|
|
manager = SessionManager.__new__(SessionManager)
|
|
manager.sessions = dict(sessions or {})
|
|
return manager
|
|
|
|
|
|
def test_cleanup_empty_sessions_archives_old_naive_last_accessed(monkeypatch):
|
|
old_session = SimpleNamespace(
|
|
id="old-chat",
|
|
archived=False,
|
|
last_accessed=datetime(2026, 5, 1, 12, 0, 0),
|
|
message_count=3,
|
|
is_important=False,
|
|
)
|
|
db = MagicMock()
|
|
db.query.return_value.all.return_value = [old_session]
|
|
|
|
monkeypatch.setattr(SM, "SessionLocal", lambda: db)
|
|
monkeypatch.setattr(SM, "utcnow_naive", lambda: datetime(2026, 6, 4, 12, 0, 0))
|
|
|
|
stats = _manager_with().cleanup_empty_sessions(auto_archive_days=30)
|
|
|
|
assert old_session.archived is True
|
|
assert stats == {"deleted_empty": 0, "archived_old": 1, "total_checked": 1}
|
|
db.commit.assert_called_once()
|
|
db.rollback.assert_not_called()
|