Restore monitoring on recheck and prevent release-search proxy timeouts
This commit is contained in:
@@ -75,9 +75,9 @@ class ManualEpisodeSearchTests(unittest.IsolatedAsyncioTestCase):
|
||||
snapshot = Snapshot(request_id='42',request_type=RequestType.tv,title='Example',raw={'arr':{'item':{'id':55,'qualityProfileId':9}}})
|
||||
with patch.object(requests, 'get_runtime_settings', return_value=runtime), patch.object(requests, 'build_snapshot', new=AsyncMock(return_value=snapshot)), patch.object(requests,'SonarrClient',return_value=sonarr), patch.object(requests,'save_action'):
|
||||
first = await requests.action_search('42', {'username':'viewer','role':'user'})
|
||||
second = await requests.action_search('42', {'username':'viewer','role':'user'}, offset=20)
|
||||
self.assertEqual(first['nextOffset'],20); self.assertIsNone(second['nextOffset'])
|
||||
self.assertEqual(sonarr.search_episode_releases.await_count,25)
|
||||
second = await requests.action_search('42', {'username':'viewer','role':'user'}, offset=24)
|
||||
self.assertEqual(first['nextOffset'],3); self.assertIsNone(second['nextOffset'])
|
||||
self.assertEqual(sonarr.search_episode_releases.await_count,4)
|
||||
self.assertLessEqual(peak,3)
|
||||
self.assertEqual(first['totalMissingEpisodes'],25)
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock, patch
|
||||
from backend.app.routers import requests
|
||||
from backend.app.models import Snapshot, RequestType
|
||||
|
||||
class RecheckMonitoringTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_series_restores_only_requested_seasons_and_episodes(self):
|
||||
original={'id':10,'monitored':False,'qualityProfileId':7,'seasons':[{'seasonNumber':1,'monitored':False},{'seasonNumber':2,'monitored':False}]}
|
||||
restored={**original,'monitored':True,'seasons':[{'seasonNumber':1,'monitored':True},{'seasonNumber':2,'monitored':False}]}
|
||||
client=SimpleNamespace(get_series=AsyncMock(side_effect=[original,restored]),update_series=AsyncMock(),get_episodes=AsyncMock(side_effect=[[{'id':1,'seasonNumber':1,'monitored':False},{'id':2,'seasonNumber':2,'monitored':False}],[{'id':1,'seasonNumber':1,'monitored':True},{'id':2,'seasonNumber':2,'monitored':False}]]),monitor_episodes=AsyncMock())
|
||||
snapshot=Snapshot(request_id='42',title='Test',request_type=RequestType.tv,raw={'arr':{'item':{'id':10}}})
|
||||
runtime=SimpleNamespace(sonarr_base_url='http://sonarr',sonarr_api_key='test')
|
||||
with patch.object(requests,'get_runtime_settings',return_value=runtime),patch.object(requests,'SonarrClient',return_value=client):
|
||||
self.assertTrue(await requests._restore_request_monitoring(snapshot,{'status':2,'seasons':[{'seasonNumber':1}]}))
|
||||
client.update_series.assert_awaited_once_with(restored)
|
||||
client.monitor_episodes.assert_awaited_once_with([1],True)
|
||||
|
||||
async def test_movie_monitoring_preserves_profile_and_pending_is_noop(self):
|
||||
movie={'id':10,'monitored':False,'qualityProfileId':7}
|
||||
client=SimpleNamespace(get_movie=AsyncMock(side_effect=[movie,{**movie,'monitored':True}]),update_movie=AsyncMock())
|
||||
snapshot=Snapshot(request_id='42',title='Test',request_type=RequestType.movie,raw={'arr':{'item':{'id':10}}})
|
||||
runtime=SimpleNamespace(radarr_base_url='http://radarr',radarr_api_key='test')
|
||||
with patch.object(requests,'get_runtime_settings',return_value=runtime),patch.object(requests,'RadarrClient',return_value=client):
|
||||
self.assertFalse(await requests._restore_request_monitoring(snapshot,{'status':1}))
|
||||
self.assertTrue(await requests._restore_request_monitoring(snapshot,{'status':2}))
|
||||
client.update_movie.assert_awaited_once_with({**movie,'monitored':True})
|
||||
Reference in New Issue
Block a user