mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-10-31 12:24:39 +08:00
test(progress): preserve coverage for helper snapshots
This commit is contained in:
74
tests/test_progress_helpers.py
Normal file
74
tests/test_progress_helpers.py
Normal file
@@ -0,0 +1,74 @@
|
||||
"""
|
||||
同步与异步进度帮助类的快照、更新和本地化契约。
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
from unittest.mock import AsyncMock, Mock
|
||||
|
||||
from app.runtime.progress import AsyncProgressHelper, ProgressHelper
|
||||
|
||||
|
||||
def test_progress_helper_lifecycle_localizes_snapshot_fields() -> None:
|
||||
"""
|
||||
同步进度应支持更新、结束、附加数据和本地化字段,并安全处理空快照。
|
||||
"""
|
||||
missing = ProgressHelper("test-progress-missing")
|
||||
missing._progress.get = Mock(return_value=None)
|
||||
missing.start()
|
||||
missing.end()
|
||||
missing.update()
|
||||
assert missing.get() is None
|
||||
|
||||
helper = ProgressHelper("test-progress-sync")
|
||||
helper.start()
|
||||
helper.update(
|
||||
value=150,
|
||||
text="处理中",
|
||||
data={"error": "错误", "message": "消息"},
|
||||
)
|
||||
detail = helper.get(locale="zh-CN")
|
||||
assert detail is not None
|
||||
assert detail["enable"] is True
|
||||
assert detail["value"] == 100
|
||||
assert detail["text"] == "处理中"
|
||||
assert detail["data"]["error_i18n"]
|
||||
assert detail["data"]["message_i18n"]
|
||||
|
||||
empty_data = ProgressHelper("test-progress-sync-end")
|
||||
empty_data.start()
|
||||
empty_data.end(data={"finished": True}, value=None)
|
||||
assert empty_data.get()["data"]["finished"] is True
|
||||
|
||||
|
||||
def test_async_progress_helper_lifecycle_localizes_snapshot_fields() -> None:
|
||||
"""
|
||||
异步进度应覆盖空快照终态、边界值更新和附加数据本地化。
|
||||
"""
|
||||
|
||||
async def scenario() -> None:
|
||||
"""
|
||||
在独立键空间中执行异步进度的完整生命周期。
|
||||
"""
|
||||
missing = AsyncProgressHelper("test-progress-async-missing")
|
||||
missing._progress.get = AsyncMock(return_value=None)
|
||||
await missing.start()
|
||||
await missing.end(data={"error": "错误"}, value=None)
|
||||
await missing.update()
|
||||
assert await missing.get() is None
|
||||
|
||||
helper = AsyncProgressHelper("test-progress-async")
|
||||
await helper.start()
|
||||
await helper.update(
|
||||
value=-10,
|
||||
text="异步处理中",
|
||||
data={"error": "错误", "message": "消息"},
|
||||
)
|
||||
detail = await helper.get(locale="zh-CN")
|
||||
assert detail is not None
|
||||
assert detail["enable"] is True
|
||||
assert detail["value"] == 0
|
||||
assert detail["text"] == "异步处理中"
|
||||
assert detail["data"]["error_i18n"]
|
||||
assert detail["data"]["message_i18n"]
|
||||
|
||||
asyncio.run(scenario())
|
||||
Reference in New Issue
Block a user