重置项目上下文与规范文档

This commit is contained in:
2026-08-07 16:18:07 +08:00
parent 6611ca5226
commit 79e2d9ff92
1900 changed files with 1552 additions and 348365 deletions

View File

@@ -1,110 +0,0 @@
"""批量修改套餐过期时间脚本测试。"""
from __future__ import annotations
import importlib.util
import sys
import unittest
from pathlib import Path
from types import SimpleNamespace
SCRIPT_PATH = Path(__file__).with_name("batch_update_package_expiry.py")
sys.path.insert(0, str(SCRIPT_PATH.parent))
SPEC = importlib.util.spec_from_file_location("batch_update_package_expiry", SCRIPT_PATH)
assert SPEC is not None and SPEC.loader is not None
batch_update_package_expiry = importlib.util.module_from_spec(SPEC)
sys.modules[SPEC.name] = batch_update_package_expiry
SPEC.loader.exec_module(batch_update_package_expiry)
sys.path.pop(0)
class BatchUpdatePackageExpiryTest(unittest.TestCase):
"""验证过期时间与生效套餐筛选。"""
def test_validates_supported_expiry_formats(self) -> None:
"""接受后端支持的日期时间格式并拒绝无效值。"""
self.assertEqual(
batch_update_package_expiry.validate_expires_at("2026-12-31 23:59:59"),
"2026-12-31 23:59:59",
)
with self.assertRaisesRegex(ValueError, "格式无效"):
batch_update_package_expiry.validate_expires_at("2026/12/31")
def test_collects_only_active_packages_across_pages(self) -> None:
"""分页收集状态为生效中的套餐。"""
class StubClient:
"""返回两页套餐数据。"""
def __init__(self) -> None:
self.calls = 0
def get_json(self, path: str, token: str) -> SimpleNamespace:
self.calls += 1
return SimpleNamespace(
status=200,
body={
"code": 0,
"data": {
"items": [
{
"status": self.calls,
"package_usage_id": self.calls,
"package_name": f"套餐{self.calls}",
"expires_at": "2026-01-01T00:00:00+08:00",
}
],
"total": 101,
},
},
raw_body="",
)
client = StubClient()
asset = batch_update_package_expiry.AssetInput(2, "8986000000000000001")
targets = batch_update_package_expiry.find_active_packages(client, "token", asset)
self.assertEqual([target.package_usage_id for target in targets], [1])
self.assertEqual(client.calls, 2)
def test_updates_package_with_requested_expiry(self) -> None:
"""PATCH 路径和请求体应使用查询得到的套餐记录。"""
class StubClient:
"""记录过期时间修改请求。"""
def patch_json(
self, path: str, payload: dict[str, object], token: str
) -> SimpleNamespace:
self.path = path
self.payload = payload
return SimpleNamespace(
status=200,
body={"code": 0, "msg": "success", "data": {}},
raw_body="",
)
client = StubClient()
target = batch_update_package_expiry.PackageTarget(
source=batch_update_package_expiry.AssetInput(2, "8986000000000000001"),
package_usage_id=88,
package_name="测试套餐",
old_expires_at="2026-01-01T00:00:00+08:00",
)
row, success, code = batch_update_package_expiry.update_package_expiry(
client, "token", target, "2026-12-31 23:59:59"
)
self.assertTrue(success)
self.assertEqual(code, 0)
self.assertEqual(
client.path,
"/api/admin/assets/8986000000000000001/packages/88/expires-at",
)
self.assertEqual(client.payload, {"expires_at": "2026-12-31 23:59:59"})
self.assertEqual(row["status"], "成功")
if __name__ == "__main__":
unittest.main()