zcbot/tests/test_admin_storage.py

49 lines
1.6 KiB
Python

"""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)
totals_result = MagicMock()
totals_result.one.return_value = (1, 100, 40, 2, 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 = [totals_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)
self.assertEqual(page["total"], 1)
self.assertEqual(page["totals"], {
"bytes_used": 100,
"trash_bytes": 40,
"physical_bytes": 140,
"file_count": 2,
"trash_file_count": 1,
})
if __name__ == "__main__":
unittest.main()