Resolve Arr metadata before adding media
This commit is contained in:
@@ -344,6 +344,67 @@ class LiveDownloadProgressTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertEqual(result["torrents"][0]["progressPercent"], 13.4)
|
||||
|
||||
|
||||
class ArrAddPayloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_radarr_add_resolves_title_before_posting_movie(self) -> None:
|
||||
client = requests_router.RadarrClient("http://radarr.test", "radarr-key")
|
||||
with patch.object(
|
||||
client,
|
||||
"get",
|
||||
new=AsyncMock(return_value={"title": "A Grand Day Out", "tmdbId": 530}),
|
||||
) as lookup, patch.object(
|
||||
client,
|
||||
"post",
|
||||
new=AsyncMock(return_value={"id": 12, "title": "A Grand Day Out"}),
|
||||
) as create:
|
||||
result = await client.add_movie(530, 1, "/movies")
|
||||
|
||||
lookup.assert_awaited_once_with("/api/v3/movie/lookup/tmdb", params={"tmdbId": 530})
|
||||
payload = create.await_args.kwargs["payload"]
|
||||
self.assertEqual(payload["title"], "A Grand Day Out")
|
||||
self.assertEqual(payload["tmdbId"], 530)
|
||||
self.assertEqual(result["id"], 12)
|
||||
|
||||
async def test_sonarr_add_resolves_matching_series_title_before_posting(self) -> None:
|
||||
client = requests_router.SonarrClient("http://sonarr.test", "sonarr-key")
|
||||
lookup_response = [
|
||||
{"title": "Wrong Show", "tvdbId": 111},
|
||||
{"title": "Example Show", "tvdbId": 222},
|
||||
]
|
||||
with patch.object(
|
||||
client,
|
||||
"get",
|
||||
new=AsyncMock(return_value=lookup_response),
|
||||
) as lookup, patch.object(
|
||||
client,
|
||||
"post",
|
||||
new=AsyncMock(return_value={"id": 42, "title": "Example Show"}),
|
||||
) as create:
|
||||
result = await client.add_series(222, 2, "/television")
|
||||
|
||||
lookup.assert_awaited_once_with("/api/v3/series/lookup", params={"term": "tvdb:222"})
|
||||
payload = create.await_args.kwargs["payload"]
|
||||
self.assertEqual(payload["title"], "Example Show")
|
||||
self.assertEqual(payload["tvdbId"], 222)
|
||||
self.assertEqual(result["id"], 42)
|
||||
|
||||
def test_arr_error_message_does_not_expose_upstream_stack_trace(self) -> None:
|
||||
response = httpx.Response(
|
||||
500,
|
||||
request=httpx.Request("POST", "http://radarr.test/api/v3/movie"),
|
||||
json={
|
||||
"message": "Object reference not set to an instance of an object.",
|
||||
"description": "System.NullReferenceException\n at Radarr.Internal.SecretMethod()",
|
||||
},
|
||||
)
|
||||
error = httpx.HTTPStatusError("Radarr failed", request=response.request, response=response)
|
||||
|
||||
message = requests_router._format_upstream_error("Radarr", error)
|
||||
|
||||
self.assertIn("Object reference", message)
|
||||
self.assertNotIn("NullReferenceException", message)
|
||||
self.assertNotIn("SecretMethod", message)
|
||||
|
||||
|
||||
class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
@staticmethod
|
||||
def _runtime() -> SimpleNamespace:
|
||||
|
||||
Reference in New Issue
Block a user