fix(radarr): Send the parameters alongside the DownloadRelease event when publishing to the networking channel

This commit is contained in:
2024-12-17 15:56:58 -07:00
parent f5614995c7
commit 4afde8b750
6 changed files with 120 additions and 105 deletions
+5 -36
View File
@@ -45,7 +45,7 @@ pub enum RadarrEvent {
DeleteMovie(DeleteMovieParams),
DeleteRootFolder(i64),
DeleteTag(i64),
DownloadRelease(Option<RadarrReleaseDownloadBody>),
DownloadRelease(RadarrReleaseDownloadBody),
EditAllIndexerSettings(Option<IndexerSettings>),
EditCollection(Option<EditCollectionParams>),
EditIndexer(Option<EditIndexerParams>),
@@ -490,44 +490,13 @@ impl<'a, 'b> Network<'a, 'b> {
async fn download_radarr_release(
&mut self,
params: Option<RadarrReleaseDownloadBody>,
params: RadarrReleaseDownloadBody,
) -> Result<Value> {
let event = RadarrEvent::DownloadRelease(None);
let body = if let Some(release_download_body) = params {
info!("Downloading Radarr release with params: {release_download_body:?}");
release_download_body
} else {
let (movie_id, _) = self.extract_movie_id(None).await;
let (guid, title, indexer_id) = {
let app = self.app.lock().await;
let RadarrRelease {
guid,
title,
indexer_id,
..
} = app
.data
.radarr_data
.movie_details_modal
.as_ref()
.unwrap()
.movie_releases
.current_selection();
(guid.clone(), title.clone(), *indexer_id)
};
info!("Downloading release: {title}");
RadarrReleaseDownloadBody {
guid,
indexer_id,
movie_id,
}
};
let event = RadarrEvent::DownloadRelease(params.clone());
info!("Downloading Radarr release with params: {params:?}");
let request_props = self
.request_props_from(event, RequestMethod::Post, Some(body), None, None)
.request_props_from(event, RequestMethod::Post, Some(params), None, None)
.await;
self
+18 -56
View File
@@ -179,7 +179,7 @@ mod test {
#[rstest]
fn test_resource_release(
#[values(RadarrEvent::GetReleases(None), RadarrEvent::DownloadRelease(None))]
#[values(RadarrEvent::GetReleases(None), RadarrEvent::DownloadRelease(RadarrReleaseDownloadBody::default()))]
event: RadarrEvent,
) {
assert_str_eq!(event.resource(), "/release");
@@ -4425,67 +4425,29 @@ mod test {
#[tokio::test]
async fn test_handle_download_radarr_release_event() {
let (async_server, app_arc, _server) = mock_servarr_api(
RequestMethod::Post,
Some(json!({
"guid": "1234",
"indexerId": 2,
"movieId": 1
})),
Some(json!({})),
None,
RadarrEvent::DownloadRelease(None),
None,
None,
)
.await;
let mut movie_details_modal = MovieDetailsModal::default();
movie_details_modal
.movie_releases
.set_items(vec![release()]);
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(movie_details_modal);
app_arc
.lock()
.await
.data
.radarr_data
.movies
.set_items(vec![movie()]);
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
assert!(network
.handle_radarr_event(RadarrEvent::DownloadRelease(None))
.await
.is_ok());
async_server.assert_async().await;
}
#[tokio::test]
async fn test_handle_download_radarr_release_event_uses_provided_params() {
let (async_server, app_arc, _server) = mock_servarr_api(
RequestMethod::Post,
Some(json!({
"guid": "1234",
"indexerId": 2,
"movieId": 1
})),
Some(json!({})),
None,
RadarrEvent::DownloadRelease(None),
None,
None,
)
.await;
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
let params = RadarrReleaseDownloadBody {
let expected_body = RadarrReleaseDownloadBody {
guid: "1234".to_owned(),
indexer_id: 2,
movie_id: 1,
};
let (async_server, app_arc, _server) = mock_servarr_api(
RequestMethod::Post,
Some(json!({
"guid": "1234",
"indexerId": 2,
"movieId": 1
})),
Some(json!({})),
None,
RadarrEvent::DownloadRelease(expected_body.clone()),
None,
None,
)
.await;
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
assert!(network
.handle_radarr_event(RadarrEvent::DownloadRelease(Some(params)))
.handle_radarr_event(RadarrEvent::DownloadRelease(expected_body))
.await
.is_ok());