From 4c396c3442f64d901e6baadde6c9785bc491f4cd Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Tue, 17 Dec 2024 20:47:29 -0700 Subject: [PATCH] fix(radarr): Pass the movie ID in alongside the GetMovieDetaisl event when publishing to the networking channel --- src/app/radarr/mod.rs | 2 +- src/app/radarr/radarr_tests.rs | 6 ++- src/cli/radarr/get_command_handler.rs | 2 +- src/cli/radarr/get_command_handler_tests.rs | 2 +- src/network/radarr_network.rs | 15 +++--- src/network/radarr_network_tests.rs | 57 ++++----------------- 6 files changed, 23 insertions(+), 61 deletions(-) diff --git a/src/app/radarr/mod.rs b/src/app/radarr/mod.rs index 8a3331c..ea7ea6c 100644 --- a/src/app/radarr/mod.rs +++ b/src/app/radarr/mod.rs @@ -108,7 +108,7 @@ impl<'a> App<'a> { } ActiveRadarrBlock::MovieDetails | ActiveRadarrBlock::FileInfo => { self - .dispatch_network_event(RadarrEvent::GetMovieDetails(None).into()) + .dispatch_network_event(RadarrEvent::GetMovieDetails(self.extract_movie_id().await).into()) .await; } ActiveRadarrBlock::MovieHistory => { diff --git a/src/app/radarr/radarr_tests.rs b/src/app/radarr/radarr_tests.rs index f132fc4..e2695a4 100644 --- a/src/app/radarr/radarr_tests.rs +++ b/src/app/radarr/radarr_tests.rs @@ -322,6 +322,7 @@ mod tests { #[tokio::test] async fn test_dispatch_by_movie_details_block() { let (mut app, mut sync_network_rx) = construct_app_unit(); + app.data.radarr_data.movies.set_items(vec![Movie { id: 1, ..Movie::default() }]); app .dispatch_by_radarr_block(&ActiveRadarrBlock::MovieDetails) @@ -330,7 +331,7 @@ mod tests { assert!(app.is_loading); assert_eq!( sync_network_rx.recv().await.unwrap(), - RadarrEvent::GetMovieDetails(None).into() + RadarrEvent::GetMovieDetails(1).into() ); assert!(!app.data.radarr_data.prompt_confirm); assert_eq!(app.tick_count, 0); @@ -339,6 +340,7 @@ mod tests { #[tokio::test] async fn test_dispatch_by_file_info_block() { let (mut app, mut sync_network_rx) = construct_app_unit(); + app.data.radarr_data.movies.set_items(vec![Movie { id: 1, ..Movie::default() }]); app .dispatch_by_radarr_block(&ActiveRadarrBlock::FileInfo) @@ -347,7 +349,7 @@ mod tests { assert!(app.is_loading); assert_eq!( sync_network_rx.recv().await.unwrap(), - RadarrEvent::GetMovieDetails(None).into() + RadarrEvent::GetMovieDetails(1).into() ); assert!(!app.data.radarr_data.prompt_confirm); assert_eq!(app.tick_count, 0); diff --git a/src/cli/radarr/get_command_handler.rs b/src/cli/radarr/get_command_handler.rs index 4fe2830..4157d68 100644 --- a/src/cli/radarr/get_command_handler.rs +++ b/src/cli/radarr/get_command_handler.rs @@ -90,7 +90,7 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, RadarrGetCommand> for RadarrGetCommandHan RadarrGetCommand::MovieDetails { movie_id } => { let resp = self .network - .handle_network_event(RadarrEvent::GetMovieDetails(Some(movie_id)).into()) + .handle_network_event(RadarrEvent::GetMovieDetails(movie_id).into()) .await?; serde_json::to_string_pretty(&resp)? } diff --git a/src/cli/radarr/get_command_handler_tests.rs b/src/cli/radarr/get_command_handler_tests.rs index e70db37..5f68e6a 100644 --- a/src/cli/radarr/get_command_handler_tests.rs +++ b/src/cli/radarr/get_command_handler_tests.rs @@ -182,7 +182,7 @@ mod tests { mock_network .expect_handle_network_event() .with(eq::( - RadarrEvent::GetMovieDetails(Some(expected_movie_id)).into(), + RadarrEvent::GetMovieDetails(expected_movie_id).into(), )) .times(1) .returning(|_| { diff --git a/src/network/radarr_network.rs b/src/network/radarr_network.rs index 31e7359..4ebeb96 100644 --- a/src/network/radarr_network.rs +++ b/src/network/radarr_network.rs @@ -56,7 +56,7 @@ pub enum RadarrEvent { GetAllIndexerSettings, GetLogs(u64), GetMovieCredits(i64), - GetMovieDetails(Option), + GetMovieDetails(i64), GetMovieHistory(Option), GetMovies, GetDiskSpace, @@ -824,9 +824,9 @@ impl<'a, 'b> Network<'a, 'b> { async fn edit_movie(&mut self, mut edit_movie_params: EditMovieParams) -> Result<()> { info!("Editing Radarr movie"); - let detail_event = RadarrEvent::GetMovieDetails(None); - let event = RadarrEvent::EditMovie(edit_movie_params.clone()); let movie_id = edit_movie_params.movie_id; + let detail_event = RadarrEvent::GetMovieDetails(movie_id); + let event = RadarrEvent::EditMovie(edit_movie_params.clone()); if let Some(tag_input_string) = edit_movie_params.tag_input_string.as_ref() { let tag_ids_vec = self .extract_and_add_radarr_tag_ids_vec(tag_input_string.clone()) @@ -1164,19 +1164,18 @@ impl<'a, 'b> Network<'a, 'b> { .await } - async fn get_movie_details(&mut self, movie_id: Option) -> Result { + async fn get_movie_details(&mut self, movie_id: i64) -> Result { info!("Fetching Radarr movie details"); - let event = RadarrEvent::GetMovieDetails(None); - let (id, _) = self.extract_movie_id(movie_id).await; + let event = RadarrEvent::GetMovieDetails(movie_id); - info!("Fetching movie details for movie with ID: {id}"); + info!("Fetching movie details for movie with ID: {movie_id}"); let request_props = self .request_props_from( event, RequestMethod::Get, None::<()>, - Some(format!("/{id}")), + Some(format!("/{movie_id}")), None, ) .await; diff --git a/src/network/radarr_network_tests.rs b/src/network/radarr_network_tests.rs index 2d4cf18..fb06714 100644 --- a/src/network/radarr_network_tests.rs +++ b/src/network/radarr_network_tests.rs @@ -120,7 +120,7 @@ mod test { RadarrEvent::AddMovie(AddMovieBody::default()), RadarrEvent::EditMovie(EditMovieParams::default()), RadarrEvent::GetMovies, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(0), RadarrEvent::DeleteMovie(DeleteMovieParams::default()) )] event: RadarrEvent, @@ -1356,24 +1356,17 @@ mod test { None, Some(serde_json::from_str(MOVIE_JSON).unwrap()), None, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(1), Some("/1"), None, ) .await; - app_arc - .lock() - .await - .data - .radarr_data - .movies - .set_items(vec![movie()]); app_arc.lock().await.data.radarr_data.quality_profile_map = BiMap::from_iter([(2222, "HD - 1080p".to_owned())]); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); if let RadarrSerdeable::Movie(movie) = network - .handle_radarr_event(RadarrEvent::GetMovieDetails(None)) + .handle_radarr_event(RadarrEvent::GetMovieDetails(1)) .await .unwrap() { @@ -1443,31 +1436,6 @@ mod test { } } - #[tokio::test] - async fn test_handle_get_movie_details_event_uses_provided_id() { - let response: Movie = serde_json::from_str(MOVIE_JSON).unwrap(); - let (async_server, app_arc, _server) = mock_servarr_api( - RequestMethod::Get, - None, - Some(serde_json::from_str(MOVIE_JSON).unwrap()), - None, - RadarrEvent::GetMovieDetails(None), - Some("/1"), - None, - ) - .await; - let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); - - if let RadarrSerdeable::Movie(movie) = network - .handle_radarr_event(RadarrEvent::GetMovieDetails(Some(1))) - .await - .unwrap() - { - async_server.assert_async().await; - assert_eq!(movie, response); - } - } - #[tokio::test] async fn test_handle_get_movie_details_event_empty_options_give_correct_defaults() { let movie_json_with_missing_fields = json!({ @@ -1498,24 +1466,17 @@ mod test { None, Some(movie_json_with_missing_fields), None, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(1), Some("/1"), None, ) .await; - app_arc - .lock() - .await - .data - .radarr_data - .movies - .set_items(vec![movie()]); app_arc.lock().await.data.radarr_data.quality_profile_map = BiMap::from_iter([(2222, "HD - 1080p".to_owned())]); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); assert!(network - .handle_radarr_event(RadarrEvent::GetMovieDetails(None)) + .handle_radarr_event(RadarrEvent::GetMovieDetails(1)) .await .is_ok()); @@ -3993,7 +3954,7 @@ mod test { None, Some(serde_json::from_str(MOVIE_JSON).unwrap()), None, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(1), Some("/1"), None, ) @@ -4043,7 +4004,7 @@ mod test { None, Some(serde_json::from_str(MOVIE_JSON).unwrap()), None, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(1), Some("/1"), None, ) @@ -4079,7 +4040,7 @@ mod test { None, Some(serde_json::from_str(MOVIE_JSON).unwrap()), None, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(1), Some("/1"), None, ) @@ -4119,7 +4080,7 @@ mod test { None, Some(serde_json::from_str(MOVIE_JSON).unwrap()), None, - RadarrEvent::GetMovieDetails(None), + RadarrEvent::GetMovieDetails(1), Some("/1"), None, )