mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-24 07:26:50 +00:00
43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
import asyncio
|
||
from unittest import TestCase
|
||
from unittest.mock import AsyncMock, patch
|
||
|
||
from app.chain.recommend import RecommendChain
|
||
from app.core.cache import TTLCache
|
||
|
||
|
||
class RecommendChainTest(TestCase):
|
||
def tearDown(self):
|
||
"""
|
||
清理推荐缓存,避免缓存装饰器状态影响其他用例。
|
||
"""
|
||
RecommendChain.tmdb_trending.cache_clear()
|
||
asyncio.run(RecommendChain.async_tmdb_trending.cache_clear())
|
||
TTLCache(region=RecommendChain.recommend_cache_region).clear()
|
||
|
||
def test_tmdb_trending_does_not_cache_empty_result(self):
|
||
"""
|
||
TMDB流行趋势返回空列表时不应缓存,避免一次接口异常后长时间固定为空。
|
||
"""
|
||
chain = RecommendChain()
|
||
with patch("app.chain.recommend.TmdbChain") as tmdb_chain:
|
||
tmdb_chain.return_value.tmdb_trending.side_effect = [[], []]
|
||
|
||
self.assertEqual(chain.tmdb_trending(page=1), [])
|
||
self.assertEqual(chain.tmdb_trending(page=1), [])
|
||
|
||
self.assertEqual(tmdb_chain.return_value.tmdb_trending.call_count, 2)
|
||
|
||
def test_async_tmdb_trending_does_not_cache_empty_result(self):
|
||
"""
|
||
异步TMDB流行趋势返回空列表时也不应缓存。
|
||
"""
|
||
chain = RecommendChain()
|
||
with patch("app.chain.recommend.TmdbChain") as tmdb_chain:
|
||
tmdb_chain.return_value.async_run_module = AsyncMock(side_effect=[[], []])
|
||
|
||
self.assertEqual(asyncio.run(chain.async_tmdb_trending(page=1)), [])
|
||
self.assertEqual(asyncio.run(chain.async_tmdb_trending(page=1)), [])
|
||
|
||
self.assertEqual(tmdb_chain.return_value.async_run_module.call_count, 2)
|