fix(radarr): Provide the movie ID alongside all TriggerAutomaticMovieSearch events when publishing to the networking channel

This commit is contained in:
2024-12-17 21:26:34 -07:00
parent 8d071c7674
commit cb8035a2ce
32 changed files with 320 additions and 224 deletions
@@ -540,19 +540,20 @@ mod tests {
}
})
}
#[test]
fn test_extract_blocklist_item_id() {
let mut app = App::default();
app.data.radarr_data.blocklist.set_items(blocklist_vec());
let blocklist_item_id = BlocklistHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::Blocklist,
None,
).extract_blocklist_item_id();
)
.extract_blocklist_item_id();
assert_eq!(blocklist_item_id, 3);
}
+8 -12
View File
@@ -28,15 +28,9 @@ impl<'a, 'b> BlocklistHandler<'a, 'b> {
self.app.data.radarr_data.blocklist,
BlocklistItem
);
fn extract_blocklist_item_id(&self) -> i64 {
self
.app
.data
.radarr_data
.blocklist
.current_selection()
.id
self.app.data.radarr_data.blocklist.current_selection().id
}
}
@@ -108,8 +102,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for BlocklistHandler<'a,
match self.active_radarr_block {
ActiveRadarrBlock::DeleteBlocklistItemPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteBlocklistItem(self.extract_blocklist_item_id()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteBlocklistItem(
self.extract_blocklist_item_id(),
));
}
self.app.pop_navigation_stack();
@@ -161,8 +156,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for BlocklistHandler<'a,
ActiveRadarrBlock::DeleteBlocklistItemPrompt => {
if key == DEFAULT_KEYBINDINGS.confirm.key {
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteBlocklistItem(self.extract_blocklist_item_id()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteBlocklistItem(
self.extract_blocklist_item_id(),
));
self.app.pop_navigation_stack();
}
@@ -29,9 +29,16 @@ impl<'a, 'b> EditCollectionHandler<'a, 'b> {
minimum_availability_list,
monitored,
quality_profile_list,
} = self.app.data.radarr_data.edit_collection_modal.as_ref().unwrap();
} = self
.app
.data
.radarr_data
.edit_collection_modal
.as_ref()
.unwrap();
let quality_profile = quality_profile_list.current_selection();
let quality_profile_id = *self.app
let quality_profile_id = *self
.app
.data
.radarr_data
.quality_profile_map
@@ -47,14 +54,13 @@ impl<'a, 'b> EditCollectionHandler<'a, 'b> {
let minimum_availability = *minimum_availability_list.current_selection();
self.app.data.radarr_data.edit_collection_modal = None;
EditCollectionParams {
collection_id,
monitored: Some(monitored),
minimum_availability: Some(minimum_availability),
quality_profile_id: Some(quality_profile_id),
root_folder_path: Some(root_folder_path),
search_on_add: Some(search_on_add)
search_on_add: Some(search_on_add),
}
}
}
@@ -231,8 +237,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandle
match self.app.data.radarr_data.selected_block.get_active_block() {
ActiveRadarrBlock::EditCollectionConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::EditCollection(self.build_edit_collection_params()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditCollection(
self.build_edit_collection_params(),
));
self.app.should_refresh = true;
}
@@ -351,7 +358,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandle
&& key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditCollection(self.build_edit_collection_params()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditCollection(
self.build_edit_collection_params(),
));
self.app.should_refresh = true;
self.app.pop_navigation_stack();
@@ -1056,7 +1056,8 @@ mod tests {
&mut app,
ActiveRadarrBlock::EditCollectionPrompt,
None,
).build_edit_collection_params();
)
.build_edit_collection_params();
assert_eq!(edit_collection_params, expected_edit_collection_params);
assert!(app.data.radarr_data.edit_collection_modal.is_none());
@@ -390,14 +390,19 @@ mod tests {
#[test]
fn test_extract_download_id() {
let mut app = App::default();
app.data.radarr_data.downloads.set_items(vec![download_record()]);
app
.data
.radarr_data
.downloads
.set_items(vec![download_record()]);
let download_id = DownloadsHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::Downloads,
None,
).extract_download_id();
)
.extract_download_id();
assert_eq!(download_id, 1);
}
+6 -10
View File
@@ -27,15 +27,9 @@ impl<'a, 'b> DownloadsHandler<'a, 'b> {
self.app.data.radarr_data.downloads,
DownloadRecord
);
fn extract_download_id(&self) -> i64 {
self
.app
.data
.radarr_data
.downloads
.current_selection()
.id
self.app.data.radarr_data.downloads.current_selection().id
}
}
@@ -105,7 +99,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for DownloadsHandler<'a,
match self.active_radarr_block {
ActiveRadarrBlock::DeleteDownloadPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteDownload(self.extract_download_id()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteDownload(self.extract_download_id()));
}
self.app.pop_navigation_stack();
@@ -148,7 +143,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for DownloadsHandler<'a,
ActiveRadarrBlock::DeleteDownloadPrompt => {
if key == DEFAULT_KEYBINDINGS.confirm.key {
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteDownload(self.extract_download_id()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteDownload(self.extract_download_id()));
self.app.pop_navigation_stack();
}
@@ -44,7 +44,13 @@ impl<'a, 'b> EditIndexerHandler<'a, 'b> {
seed_ratio,
priority,
..
} = self.app.data.radarr_data.edit_indexer_modal.as_ref().unwrap();
} = self
.app
.data
.radarr_data
.edit_indexer_modal
.as_ref()
.unwrap();
EditIndexerParams {
indexer_id,
@@ -349,7 +355,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditIndexerHandler<'
match selected_block {
ActiveRadarrBlock::EditIndexerConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditIndexer(self.build_edit_indexer_params()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::EditIndexer(self.build_edit_indexer_params()));
self.app.should_refresh = true;
} else {
self.app.data.radarr_data.edit_indexer_modal = None;
@@ -514,7 +521,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditIndexerHandler<'
&& self.key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditIndexer(self.build_edit_indexer_params()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::EditIndexer(self.build_edit_indexer_params()));
self.app.should_refresh = true;
self.app.pop_navigation_stack();
@@ -1822,13 +1822,14 @@ mod tests {
priority: Some(25),
..EditIndexerParams::default()
};
let edit_indexer_params = EditIndexerHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::EditIndexerPrompt,
None,
).build_edit_indexer_params();
)
.build_edit_indexer_params();
assert_eq!(edit_indexer_params, expected_edit_indexer_params);
assert!(app.data.radarr_data.edit_indexer_modal.is_none());
@@ -176,7 +176,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for IndexerSettingsHandl
match self.app.data.radarr_data.selected_block.get_active_block() {
ActiveRadarrBlock::IndexerSettingsConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditAllIndexerSettings(self.build_edit_indexer_settings_body()));
self.app.data.radarr_data.prompt_confirm_action = Some(
RadarrEvent::EditAllIndexerSettings(self.build_edit_indexer_settings_body()),
);
self.app.should_refresh = true;
} else {
self.app.data.radarr_data.indexer_settings = None;
@@ -266,8 +268,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for IndexerSettingsHandl
&& self.key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::EditAllIndexerSettings(self.build_edit_indexer_settings_body()));
self.app.data.radarr_data.prompt_confirm_action = Some(
RadarrEvent::EditAllIndexerSettings(self.build_edit_indexer_settings_body()),
);
self.app.should_refresh = true;
self.app.pop_navigation_stack();
@@ -980,7 +980,8 @@ mod tests {
&mut app,
ActiveRadarrBlock::AllIndexerSettingsPrompt,
None,
).build_edit_indexer_settings_body();
)
.build_edit_indexer_settings_body();
assert_eq!(body, indexer_settings());
assert!(app.data.radarr_data.indexer_settings.is_none());
@@ -241,11 +241,7 @@ mod tests {
#[test]
fn test_delete_indexer_prompt_confirm_submit() {
let mut app = App::default();
app
.data
.radarr_data
.indexers
.set_items(vec![indexer()]);
app.data.radarr_data.indexers.set_items(vec![indexer()]);
app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(ActiveRadarrBlock::Indexers.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into());
@@ -544,11 +540,7 @@ mod tests {
#[test]
fn test_delete_indexer_prompt_confirm() {
let mut app = App::default();
app
.data
.radarr_data
.indexers
.set_items(vec![indexer()]);
app.data.radarr_data.indexers.set_items(vec![indexer()]);
app.push_navigation_stack(ActiveRadarrBlock::Indexers.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into());
@@ -651,7 +643,8 @@ mod tests {
&mut app,
ActiveRadarrBlock::Indexers,
None,
).extract_indexer_id();
)
.extract_indexer_id();
assert_eq!(indexer_id, 1);
}
+4 -9
View File
@@ -33,15 +33,9 @@ pub(super) struct IndexersHandler<'a, 'b> {
impl<'a, 'b> IndexersHandler<'a, 'b> {
handle_table_events!(self, indexers, self.app.data.radarr_data.indexers, Indexer);
fn extract_indexer_id(&self) -> i64 {
self
.app
.data
.radarr_data
.indexers
.current_selection()
.id
self.app.data.radarr_data.indexers.current_selection().id
}
}
@@ -200,7 +194,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for IndexersHandler<'a,
ActiveRadarrBlock::DeleteIndexerPrompt => {
if key == DEFAULT_KEYBINDINGS.confirm.key {
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteIndexer(self.extract_indexer_id()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteIndexer(self.extract_indexer_id()));
self.app.pop_navigation_stack();
}
@@ -1,7 +1,9 @@
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::models::radarr_models::{AddMovieBody, AddMovieOptions, AddMovieSearchResult, CollectionMovie};
use crate::models::radarr_models::{
AddMovieBody, AddMovieOptions, AddMovieSearchResult, CollectionMovie,
};
use crate::models::servarr_data::radarr::modals::AddMovieModal;
use crate::models::servarr_data::radarr::radarr_data::{
ActiveRadarrBlock, ADD_MOVIE_BLOCKS, ADD_MOVIE_SELECTION_BLOCKS,
@@ -54,10 +56,10 @@ impl<'a, 'b> AddMovieHandler<'a, 'b> {
quality_profile_list,
..
} = self.app.data.radarr_data.add_movie_modal.as_ref().unwrap();
let (tmdb_id, title) = if let Some(context) = self.context
{
let (tmdb_id, title) = if let Some(context) = self.context {
if context == ActiveRadarrBlock::CollectionDetails {
let CollectionMovie { tmdb_id, title, .. } = self.app
let CollectionMovie { tmdb_id, title, .. } = self
.app
.data
.radarr_data
.collection_movies
@@ -65,7 +67,8 @@ impl<'a, 'b> AddMovieHandler<'a, 'b> {
.clone();
(tmdb_id, title.text)
} else {
let AddMovieSearchResult { tmdb_id, title, .. } = self.app
let AddMovieSearchResult { tmdb_id, title, .. } = self
.app
.data
.radarr_data
.add_searched_movies
@@ -76,7 +79,8 @@ impl<'a, 'b> AddMovieHandler<'a, 'b> {
(tmdb_id, title.text)
}
} else {
let AddMovieSearchResult { tmdb_id, title, .. } = self.app
let AddMovieSearchResult { tmdb_id, title, .. } = self
.app
.data
.radarr_data
.add_searched_movies
@@ -87,7 +91,8 @@ impl<'a, 'b> AddMovieHandler<'a, 'b> {
(tmdb_id, title.text)
};
let quality_profile = quality_profile_list.current_selection();
let quality_profile_id = *self.app
let quality_profile_id = *self
.app
.data
.radarr_data
.quality_profile_map
@@ -446,7 +451,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for AddMovieHandler<'a,
match self.app.data.radarr_data.selected_block.get_active_block() {
ActiveRadarrBlock::AddMovieConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddMovie(self.build_add_movie_body()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::AddMovie(self.build_add_movie_body()));
}
self.app.pop_navigation_stack();
@@ -546,7 +552,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for AddMovieHandler<'a,
&& key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddMovie(self.build_add_movie_body()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::AddMovie(self.build_add_movie_body()));
self.app.pop_navigation_stack();
}
}
@@ -1522,7 +1522,7 @@ mod tests {
}
});
}
#[test]
fn test_add_movie_search_no_panic_on_none_search_result() {
let mut app = App::default();
@@ -22,12 +22,8 @@ impl<'a, 'b> DeleteMovieHandler<'a, 'b> {
let id = self.app.data.radarr_data.movies.current_selection().id;
let delete_movie_files = self.app.data.radarr_data.delete_movie_files;
let add_list_exclusion = self.app.data.radarr_data.add_list_exclusion;
self
.app
.data
.radarr_data
.reset_delete_movie_preferences();
self.app.data.radarr_data.reset_delete_movie_preferences();
DeleteMovieParams {
id,
delete_movie_files,
@@ -92,7 +88,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for DeleteMovieHandler<'
match self.app.data.radarr_data.selected_block.get_active_block() {
ActiveRadarrBlock::DeleteMovieConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteMovie(self.build_delete_movie_params()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteMovie(self.build_delete_movie_params()));
self.app.should_refresh = true;
} else {
self.app.data.radarr_data.reset_delete_movie_preferences();
@@ -128,7 +125,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for DeleteMovieHandler<'
&& self.key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteMovie(self.build_delete_movie_params()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DeleteMovie(self.build_delete_movie_params()));
self.app.should_refresh = true;
self.app.pop_navigation_stack();
@@ -330,7 +330,8 @@ mod tests {
&mut app,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
).build_delete_movie_params();
)
.build_delete_movie_params();
assert_eq!(delete_movie_params, expected_delete_movie_params);
assert!(!app.data.radarr_data.delete_movie_files);
@@ -23,7 +23,16 @@ pub(super) struct EditMovieHandler<'a, 'b> {
impl<'a, 'b> EditMovieHandler<'a, 'b> {
fn build_edit_movie_params(&mut self) -> EditMovieParams {
let movie_id = self.app.data.radarr_data.movies.current_selection().id;
let tags = self.app.data.radarr_data.edit_movie_modal.as_ref().unwrap().tags.text.clone();
let tags = self
.app
.data
.radarr_data
.edit_movie_modal
.as_ref()
.unwrap()
.tags
.text
.clone();
let params = {
let EditMovieModal {
monitored,
@@ -33,7 +42,8 @@ impl<'a, 'b> EditMovieHandler<'a, 'b> {
..
} = self.app.data.radarr_data.edit_movie_modal.as_ref().unwrap();
let quality_profile = quality_profile_list.current_selection();
let quality_profile_id = *self.app
let quality_profile_id = *self
.app
.data
.radarr_data
.quality_profile_map
@@ -265,7 +275,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditMovieHandler<'a,
match self.app.data.radarr_data.selected_block.get_active_block() {
ActiveRadarrBlock::EditMovieConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditMovie(self.build_edit_movie_params()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::EditMovie(self.build_edit_movie_params()));
self.app.should_refresh = true;
}
@@ -376,7 +387,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditMovieHandler<'a,
&& key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditMovie(self.build_edit_movie_params()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::EditMovie(self.build_edit_movie_params()));
self.app.should_refresh = true;
self.app.pop_navigation_stack();
@@ -1185,7 +1185,8 @@ mod tests {
&mut app,
ActiveRadarrBlock::EditMoviePrompt,
None,
).build_edit_movie_params();
)
.build_edit_movie_params();
assert_eq!(edit_movie_params, expected_edit_movie_params);
assert!(app.data.radarr_data.edit_movie_modal.is_none());
@@ -6,7 +6,9 @@ use crate::event::Key;
use crate::handle_table_events;
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::models::radarr_models::{Credit, MovieHistoryItem, RadarrRelease, RadarrReleaseDownloadBody};
use crate::models::radarr_models::{
Credit, MovieHistoryItem, RadarrRelease, RadarrReleaseDownloadBody,
};
use crate::models::servarr_data::radarr::radarr_data::{
ActiveRadarrBlock, EDIT_MOVIE_SELECTION_BLOCKS, MOVIE_DETAILS_BLOCKS,
};
@@ -79,15 +81,14 @@ impl<'a, 'b> MovieDetailsHandler<'a, 'b> {
.movie_crew,
Credit
);
fn build_radarr_release_download_body(&self) -> RadarrReleaseDownloadBody {
let movie_id = self.app.data.radarr_data.movies.current_selection().id;
let (guid, indexer_id) = {
let RadarrRelease {
guid,
indexer_id,
..
} = self.app
guid, indexer_id, ..
} = self
.app
.data
.radarr_data
.movie_details_modal
@@ -105,6 +106,10 @@ impl<'a, 'b> MovieDetailsHandler<'a, 'b> {
movie_id,
}
}
fn extract_movie_id(&self) -> i64 {
self.app.data.radarr_data.movies.current_selection().id
}
}
impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<'a, 'b> {
@@ -266,7 +271,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
ActiveRadarrBlock::AutomaticallySearchMoviePrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::TriggerAutomaticSearch(None));
Some(RadarrEvent::TriggerAutomaticSearch(self.extract_movie_id()));
}
self.app.pop_navigation_stack();
@@ -285,8 +290,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
}
ActiveRadarrBlock::ManualSearchConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::DownloadRelease(self.build_radarr_release_download_body()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DownloadRelease(
self.build_radarr_release_download_body(),
));
}
self.app.pop_navigation_stack();
@@ -359,7 +365,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::TriggerAutomaticSearch(None));
Some(RadarrEvent::TriggerAutomaticSearch(self.extract_movie_id()));
self.app.pop_navigation_stack();
}
@@ -371,7 +377,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
}
ActiveRadarrBlock::ManualSearchConfirmPrompt if key == DEFAULT_KEYBINDINGS.confirm.key => {
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DownloadRelease(self.build_radarr_release_download_body()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DownloadRelease(
self.build_radarr_release_download_body(),
));
self.app.pop_navigation_stack();
}
@@ -361,7 +361,7 @@ mod tests {
#[rstest]
#[case(
ActiveRadarrBlock::AutomaticallySearchMoviePrompt,
RadarrEvent::TriggerAutomaticSearch(None)
RadarrEvent::TriggerAutomaticSearch(1)
)]
#[case(
ActiveRadarrBlock::UpdateAndScanPrompt,
@@ -388,11 +388,7 @@ mod tests {
.movie_releases
.set_items(vec![release()]);
app.data.radarr_data.movie_details_modal = Some(movie_details_modal);
app
.data
.radarr_data
.movies
.set_items(vec![movie()]);
app.data.radarr_data.movies.set_items(vec![movie()]);
app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(ActiveRadarrBlock::MovieDetails.into());
app.push_navigation_stack(prompt_block.into());
@@ -786,7 +782,7 @@ mod tests {
#[rstest]
#[case(
ActiveRadarrBlock::AutomaticallySearchMoviePrompt,
RadarrEvent::TriggerAutomaticSearch(None)
RadarrEvent::TriggerAutomaticSearch(1)
)]
#[case(
ActiveRadarrBlock::UpdateAndScanPrompt,
@@ -813,11 +809,7 @@ mod tests {
.movie_releases
.set_items(vec![release()]);
app.data.radarr_data.movie_details_modal = Some(movie_details_modal);
app
.data
.radarr_data
.movies
.set_items(vec![movie()]);
app.data.radarr_data.movies.set_items(vec![movie()]);
app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(ActiveRadarrBlock::MovieDetails.into());
app.push_navigation_stack(prompt_block.into());
@@ -850,11 +842,7 @@ mod tests {
.movie_releases
.set_items(vec![release()]);
app.data.radarr_data.movie_details_modal = Some(movie_details_modal);
app
.data
.radarr_data
.movies
.set_items(vec![movie()]);
app.data.radarr_data.movies.set_items(vec![movie()]);
let expected_body = RadarrReleaseDownloadBody {
guid: "1234".to_owned(),
indexer_id: 2,
@@ -866,11 +854,28 @@ mod tests {
&mut app,
ActiveRadarrBlock::ManualSearchConfirmPrompt,
None,
).build_radarr_release_download_body();
)
.build_radarr_release_download_body();
assert_eq!(body, expected_body);
}
#[test]
fn test_extract_movie_id() {
let mut app = App::default();
app.data.radarr_data.movies.set_items(vec![movie()]);
let movie_id = MovieDetailsHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::AutomaticallySearchMoviePrompt,
None,
)
.extract_movie_id();
assert_eq!(movie_id, 1);
}
#[test]
fn test_releases_sorting_options_source() {
let expected_cmp_fn: fn(&RadarrRelease, &RadarrRelease) -> Ordering =
@@ -28,9 +28,10 @@ impl<'a, 'b> RootFoldersHandler<'a, 'b> {
self.app.data.radarr_data.root_folders,
RootFolder
);
fn build_add_root_folder_body(&mut self) -> AddRootFolderBody {
let path = self.app
let path = self
.app
.data
.radarr_data
.edit_root_folder
@@ -43,9 +44,10 @@ impl<'a, 'b> RootFoldersHandler<'a, 'b> {
AddRootFolderBody { path }
}
fn extract_root_folder_id(&mut self) -> i64 {
self.app
self
.app
.data
.radarr_data
.root_folders
@@ -164,7 +166,9 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for RootFoldersHandler<'
.text
.is_empty() =>
{
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddRootFolder(self.build_add_root_folder_body()));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddRootFolder(
self.build_add_root_folder_body(),
));
self.app.data.radarr_data.prompt_confirm = true;
self.app.should_ignore_quit_key = false;
self.app.pop_navigation_stack();
@@ -252,7 +252,9 @@ mod tests {
#[test]
fn test_add_root_folder_prompt_confirm_submit() {
let mut app = App::default();
let expected_add_root_folder_body = AddRootFolderBody { path: "Test".to_owned() };
let expected_add_root_folder_body = AddRootFolderBody {
path: "Test".to_owned(),
};
app
.data
.radarr_data
@@ -646,34 +648,38 @@ mod tests {
fn test_build_add_root_folder_body() {
let mut app = App::default();
app.data.radarr_data.edit_root_folder = Some("/nfs/test".into());
let expected_add_root_folder_body = AddRootFolderBody { path: "/nfs/test".to_owned() };
let expected_add_root_folder_body = AddRootFolderBody {
path: "/nfs/test".to_owned(),
};
let actual_add_root_folder_body = RootFoldersHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::RootFolders,
None,
).build_add_root_folder_body();
)
.build_add_root_folder_body();
assert_eq!(actual_add_root_folder_body, expected_add_root_folder_body);
assert!(app
.data
.radarr_data
.edit_root_folder
.is_none());
assert!(app.data.radarr_data.edit_root_folder.is_none());
}
#[test]
fn test_extract_root_folder_id() {
let mut app = App::default();
app.data.radarr_data.root_folders.set_items(vec![root_folder()]);
app
.data
.radarr_data
.root_folders
.set_items(vec![root_folder()]);
let root_folder_id = RootFoldersHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::RootFolders,
None,
).extract_root_folder_id();
)
.extract_root_folder_id();
assert_eq!(root_folder_id, 1);
}
@@ -21,7 +21,13 @@ pub(super) struct SystemDetailsHandler<'a, 'b> {
impl<'a, 'b> SystemDetailsHandler<'a, 'b> {
fn extract_task_name(&self) -> RadarrTaskName {
self.app.data.radarr_data.tasks.current_selection().task_name
self
.app
.data
.radarr_data
.tasks
.current_selection()
.task_name
}
}
@@ -144,7 +150,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for SystemDetailsHandler
}
ActiveRadarrBlock::SystemTaskStartConfirmPrompt => {
if self.app.data.radarr_data.prompt_confirm {
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::StartTask(self.extract_task_name()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::StartTask(self.extract_task_name()));
}
self.app.pop_navigation_stack();
@@ -181,7 +188,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for SystemDetailsHandler
&& self.key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::StartTask(self.extract_task_name()));
self.app.data.radarr_data.prompt_confirm_action =
Some(RadarrEvent::StartTask(self.extract_task_name()));
self.app.pop_navigation_stack();
}
}
@@ -952,7 +952,8 @@ mod tests {
&mut app,
ActiveRadarrBlock::SystemTasks,
None,
).extract_task_name();
)
.extract_task_name();
assert_eq!(task_name, RadarrTaskName::default());
}