diff --git a/src/cli/radarr/mod.rs b/src/cli/radarr/mod.rs index 623dd5a..c4b1675 100644 --- a/src/cli/radarr/mod.rs +++ b/src/cli/radarr/mod.rs @@ -116,7 +116,7 @@ pub enum RadarrCommand { #[arg(long, help = "The ID of the indexer to test", required = true)] indexer_id: i64, }, - #[command(about = "Test all indexers")] + #[command(about = "Test all Radarr indexers")] TestAllIndexers, #[command(about = "Trigger an automatic search for the movie with the specified ID")] TriggerAutomaticSearch { @@ -243,6 +243,7 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, RadarrCommand> for RadarrCliHandler<'a, ' serde_json::to_string_pretty(&resp)? } RadarrCommand::TestAllIndexers => { + println!("Testing all Radarr indexers. This may take a minute..."); let resp = self .network .handle_network_event(RadarrEvent::TestAllIndexers.into()) diff --git a/src/cli/sonarr/mod.rs b/src/cli/sonarr/mod.rs index 421d560..e8a84ee 100644 --- a/src/cli/sonarr/mod.rs +++ b/src/cli/sonarr/mod.rs @@ -97,6 +97,8 @@ pub enum SonarrCommand { #[arg(long, help = "The ID of the indexer to test", required = true)] indexer_id: i64, }, + #[command(about = "Test all Radarr indexers")] + TestAllIndexers, } impl From for Command { @@ -199,6 +201,14 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, SonarrCommand> for SonarrCliHandler<'a, ' .await?; serde_json::to_string_pretty(&resp)? } + SonarrCommand::TestAllIndexers => { + println!("Testing all Sonarr indexers. This may take a minute..."); + let resp = self + .network + .handle_network_event(SonarrEvent::TestAllIndexers.into()) + .await?; + serde_json::to_string_pretty(&resp)? + } }; Ok(result) diff --git a/src/cli/sonarr/sonarr_command_tests.rs b/src/cli/sonarr/sonarr_command_tests.rs index 57f1422..02da0f5 100644 --- a/src/cli/sonarr/sonarr_command_tests.rs +++ b/src/cli/sonarr/sonarr_command_tests.rs @@ -22,7 +22,9 @@ mod tests { use rstest::rstest; #[rstest] - fn test_commands_that_have_no_arg_requirements(#[values("clear-blocklist")] subcommand: &str) { + fn test_commands_that_have_no_arg_requirements( + #[values("clear-blocklist", "test-all-indexers")] subcommand: &str, + ) { let result = Cli::command().try_get_matches_from(["managarr", "sonarr", subcommand]); assert!(result.is_ok()); @@ -486,5 +488,27 @@ mod tests { assert!(result.is_ok()); } + + #[tokio::test] + async fn test_test_all_indexers_command() { + let mut mock_network = MockNetworkTrait::new(); + mock_network + .expect_handle_network_event() + .with(eq::(SonarrEvent::TestAllIndexers.into())) + .times(1) + .returning(|_| { + Ok(Serdeable::Sonarr(SonarrSerdeable::Value( + json!({"testResponse": "response"}), + ))) + }); + let app_arc = Arc::new(Mutex::new(App::default())); + let test_all_indexers_command = SonarrCommand::TestAllIndexers; + + let result = SonarrCliHandler::with(&app_arc, test_all_indexers_command, &mut mock_network) + .handle() + .await; + + assert!(result.is_ok()); + } } }