"""Admin 存储快照的配额、回收站与物理合计口径。""" from __future__ import annotations import sys import unittest from datetime import datetime, timezone from pathlib import Path from unittest.mock import MagicMock, patch from uuid import uuid4 sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from web.admin import _storage_page class AdminStorageTests(unittest.TestCase): def test_storage_page_exposes_trash_and_physical_total(self) -> None: uid = uuid4() scanned = datetime(2026, 8, 28, tzinfo=timezone.utc) total_result = MagicMock() total_result.scalar_one.return_value = 1 rows_result = MagicMock() rows_result.all.return_value = [ (uid, "user@example.com", "测试用户", "tester", 100, 2, 40, 1, scanned) ] session = MagicMock() session.execute.side_effect = [total_result, rows_result] with patch("core.agent_builder.load_config", return_value={"quotas": {}}): page = _storage_page(session, 0, 20) row = page["rows"][0] self.assertEqual(row["bytes_used"], 100) self.assertEqual(row["trash_bytes"], 40) self.assertEqual(row["trash_file_count"], 1) self.assertEqual(row["physical_bytes"], 140) if __name__ == "__main__": unittest.main()