mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/jxxghp/MoviePilot.git
synced 2026-09-21 00:23:39 +08:00
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
"""订阅消息交互删除动作的应用边界测试。"""
|
||
|
||
from types import SimpleNamespace
|
||
|
||
from app.application.messaging.subscribe import SubscribeInteractionHandler
|
||
|
||
|
||
class _Repository:
|
||
"""只提供消息展示所需读取能力的订阅仓储替身。"""
|
||
|
||
def __init__(self, subscribes):
|
||
"""按订阅 ID 保存测试快照。"""
|
||
self._subscribes = subscribes
|
||
|
||
def get(self, subscribe_id):
|
||
"""返回指定订阅快照。"""
|
||
return self._subscribes.get(subscribe_id)
|
||
|
||
|
||
def test_interaction_delete_delegates_each_existing_id_to_application_action():
|
||
"""消息层只负责解析和展示,删除必须委托统一 Application 动作。"""
|
||
deleted_ids = []
|
||
handler = SubscribeInteractionHandler(
|
||
messenger=SimpleNamespace(),
|
||
actions=SimpleNamespace(),
|
||
repository=_Repository({
|
||
7: SimpleNamespace(name="电影订阅"),
|
||
8: SimpleNamespace(name="剧集订阅"),
|
||
}),
|
||
delete_subscription=lambda subscribe_id: deleted_ids.append(subscribe_id) or True,
|
||
)
|
||
|
||
success, message = handler._delete_subscribes("7 8 9")
|
||
|
||
assert success is True
|
||
assert deleted_ids == [7, 8]
|
||
assert message == "已删除 2 个订阅:电影订阅, 剧集订阅;未找到:9"
|
||
|
||
|
||
def test_interaction_delete_reports_transaction_race_as_missing():
|
||
"""读取后事务内目标消失时不得误报已删除。"""
|
||
handler = SubscribeInteractionHandler(
|
||
messenger=SimpleNamespace(),
|
||
actions=SimpleNamespace(),
|
||
repository=_Repository({7: SimpleNamespace(name="电影订阅")}),
|
||
delete_subscription=lambda _subscribe_id: False,
|
||
)
|
||
|
||
success, message = handler._delete_subscribes("7")
|
||
|
||
assert success is False
|
||
assert message == "未找到订阅:7"
|