diff --git a/src/network/radarr_network.rs b/src/network/radarr_network.rs index c1fc776..ef112b4 100644 --- a/src/network/radarr_network.rs +++ b/src/network/radarr_network.rs @@ -978,20 +978,24 @@ impl<'a, 'b> Network<'a, 'b> { .await; self - .handle_request::<(), Vec>(request_props, |movie_history_vec, mut app| { - debug!("Assuming the movie_details_modal is already a Some and was created by the get_movie_details request"); - let mut reversed_movie_history_vec = movie_history_vec.to_vec(); - reversed_movie_history_vec.reverse(); - app - .data - .radarr_data - .movie_details_modal - .as_mut() - .unwrap() - .movie_history - .set_items(reversed_movie_history_vec) - }) - .await; + .handle_request::<(), Vec>(request_props, |movie_history_vec, mut app| { + let mut reversed_movie_history_vec = movie_history_vec.to_vec(); + reversed_movie_history_vec.reverse(); + + if app.data.radarr_data.movie_details_modal.is_none() { + app.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default()) + } + + app + .data + .radarr_data + .movie_details_modal + .as_mut() + .unwrap() + .movie_history + .set_items(reversed_movie_history_vec) + }) + .await; } async fn get_movies(&mut self) { diff --git a/src/network/radarr_network_tests.rs b/src/network/radarr_network_tests.rs index 2c331be..0aac1f7 100644 --- a/src/network/radarr_network_tests.rs +++ b/src/network/radarr_network_tests.rs @@ -876,6 +876,52 @@ mod test { ); } + #[tokio::test] + async fn test_handle_get_movie_history_event_empty_movie_details_modal() { + let movie_history_item_json = json!([{ + "sourceTitle": "Test", + "quality": { "quality": { "name": "HD - 1080p" }}, + "languages": [ { "name": "English" } ], + "date": "2022-12-30T07:37:56Z", + "eventType": "grabbed" + }]); + let resource = format!("{}?movieId=1", RadarrEvent::GetMovieHistory.resource()); + let (async_server, app_arc, _server) = mock_radarr_api( + RequestMethod::Get, + None, + Some(movie_history_item_json), + &resource, + ) + .await; + app_arc + .lock() + .await + .data + .radarr_data + .movies + .set_items(vec![movie()]); + let mut network = Network::new(&app_arc, CancellationToken::new()); + + network + .handle_radarr_event(RadarrEvent::GetMovieHistory) + .await; + + async_server.assert_async().await; + assert_eq!( + app_arc + .lock() + .await + .data + .radarr_data + .movie_details_modal + .as_ref() + .unwrap() + .movie_history + .items, + vec![movie_history_item()] + ); + } + #[tokio::test] async fn test_handle_get_collections_event() { let collection_json = json!([{