重置项目上下文与规范文档
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user