test(radarr): pin table search, filter and selection behaviour

Radarr handler tests never asserted which block the search and filter keys
push, so transposing searching_block and filtering_block in a
TableHandlingConfig went undetected. Add a search key and a filter key test
for each of the three handlers that configure them: library, collections and
history.

No test moved a table or list selection off index 0 either, which made
current_selection() and items[0] indistinguishable. Select a non-zero index
in the tests covering every handler that reads a selected row, enriching
fixtures with a second, distinct entry where only one existed.

Several fixtures also asserted against a default value, so the expected
result was indistinguishable from an unset field. The system details tasks
now use two distinct non-default task names, and the add movie body expects
a non-default monitor and minimum availability.
This commit is contained in:
Dark-Alex-17 committed 2026-09-09 10:47:07 -06:00
1 parent c9244b0459
commit 4cbec79334
16 files changed
+481 -133

No files matched your search

@@ -154,7 +154,7 @@ mod tests {
#[case( #[case(
ActiveRadarrBlock::Blocklist, ActiveRadarrBlock::Blocklist,
ActiveRadarrBlock::DeleteBlocklistItemPrompt, ActiveRadarrBlock::DeleteBlocklistItemPrompt,
RadarrEvent::DeleteBlocklistItem(3) RadarrEvent::DeleteBlocklistItem(2)
)] )]
#[case( #[case(
ActiveRadarrBlock::Blocklist, ActiveRadarrBlock::Blocklist,
@@ -168,6 +168,7 @@ mod tests {
) { ) {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.blocklist.set_items(blocklist_vec()); app.data.radarr_data.blocklist.set_items(blocklist_vec());
app.data.radarr_data.blocklist.select_index(Some(1));
app.data.radarr_data.prompt_confirm = true; app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(base_route.into()); app.push_navigation_stack(base_route.into());
app.push_navigation_stack(prompt_block.into()); app.push_navigation_stack(prompt_block.into());
@@ -353,7 +354,7 @@ mod tests {
#[case( #[case(
ActiveRadarrBlock::Blocklist, ActiveRadarrBlock::Blocklist,
ActiveRadarrBlock::DeleteBlocklistItemPrompt, ActiveRadarrBlock::DeleteBlocklistItemPrompt,
RadarrEvent::DeleteBlocklistItem(3) RadarrEvent::DeleteBlocklistItem(2)
)] )]
#[case( #[case(
ActiveRadarrBlock::Blocklist, ActiveRadarrBlock::Blocklist,
@@ -367,6 +368,7 @@ mod tests {
) { ) {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.blocklist.set_items(blocklist_vec()); app.data.radarr_data.blocklist.set_items(blocklist_vec());
app.data.radarr_data.blocklist.select_index(Some(1));
app.push_navigation_stack(base_route.into()); app.push_navigation_stack(base_route.into());
app.push_navigation_stack(prompt_block.into()); app.push_navigation_stack(prompt_block.into());
@@ -556,6 +558,7 @@ mod tests {
fn test_extract_blocklist_item_id() { fn test_extract_blocklist_item_id() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.blocklist.set_items(blocklist_vec()); app.data.radarr_data.blocklist.set_items(blocklist_vec());
app.data.radarr_data.blocklist.select_index(Some(1));
let blocklist_item_id = BlocklistHandler::new( let blocklist_item_id = BlocklistHandler::new(
DEFAULT_KEYBINDINGS.esc.key, DEFAULT_KEYBINDINGS.esc.key,
@@ -565,7 +568,7 @@ mod tests {
) )
.extract_blocklist_item_id(); .extract_blocklist_item_id();
assert_eq!(blocklist_item_id, 3); assert_eq!(blocklist_item_id, 2);
} }
#[test] #[test]
@@ -142,11 +142,15 @@ mod tests {
#[test] #[test]
fn test_collection_details_submit_movie_already_in_library() { fn test_collection_details_submit_movie_already_in_library() {
let mut app = App::test_default(); let mut app = App::test_default();
app app.data.radarr_data.collection_movies.set_items(vec![
.data CollectionMovie {
.radarr_data tmdb_id: 5678,
.collection_movies overview: "Some other overview".to_owned(),
.set_items(vec![collection_movie()]); ..CollectionMovie::default()
},
collection_movie(),
]);
app.data.radarr_data.collection_movies.select_index(Some(1));
app.data.radarr_data.movies.set_items(vec![Movie { app.data.radarr_data.movies.set_items(vec![Movie {
tmdb_id: collection_movie().tmdb_id, tmdb_id: collection_movie().tmdb_id,
..Movie::default() ..Movie::default()
@@ -381,6 +381,48 @@ mod tests {
assert!(!app.should_refresh); assert!(!app.should_refresh);
} }
#[test]
fn test_search_collections_key() {
let mut app = App::test_default();
app.push_navigation_stack(ActiveRadarrBlock::Collections.into());
app
.data
.radarr_data
.collections
.set_items(vec![Collection::default()]);
CollectionsHandler::new(
DEFAULT_KEYBINDINGS.search.key,
&mut app,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_navigation_pushed!(app, ActiveRadarrBlock::SearchCollection.into());
}
#[test]
fn test_filter_collections_key() {
let mut app = App::test_default();
app.push_navigation_stack(ActiveRadarrBlock::Collections.into());
app
.data
.radarr_data
.collections
.set_items(vec![Collection::default()]);
CollectionsHandler::new(
DEFAULT_KEYBINDINGS.filter.key,
&mut app,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_navigation_pushed!(app, ActiveRadarrBlock::FilterCollections.into());
}
#[test] #[test]
fn test_update_all_collections_prompt_confirm_confirm() { fn test_update_all_collections_prompt_confirm_confirm() {
let mut app = App::test_default(); let mut app = App::test_default();
@@ -532,19 +532,34 @@ mod tests {
edit_collection_modal edit_collection_modal
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
edit_collection_modal
.quality_profile_list
.state
.select(Some(1));
edit_collection_modal
.minimum_availability_list
.state
.select(Some(1));
app.data.radarr_data.edit_collection_modal = Some(edit_collection_modal); app.data.radarr_data.edit_collection_modal = Some(edit_collection_modal);
app.data.radarr_data.collections.set_items(vec![Collection { app.data.radarr_data.collections.set_items(vec![
monitored: false, Collection {
search_on_add: false, id: 999,
..collection() ..collection()
}]); },
Collection {
monitored: false,
search_on_add: false,
..collection()
},
]);
app.data.radarr_data.collections.select_index(Some(1));
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_collection_params = EditCollectionParams { let expected_edit_collection_params = EditCollectionParams {
collection_id: 123, collection_id: 123,
monitored: Some(false), monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced), minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(1111), quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()), root_folder_path: Some("/nfs/Test Path".to_owned()),
search_on_add: Some(false), search_on_add: Some(false),
}; };
@@ -945,19 +960,34 @@ mod tests {
edit_collection_modal edit_collection_modal
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
edit_collection_modal
.quality_profile_list
.state
.select(Some(1));
edit_collection_modal
.minimum_availability_list
.state
.select(Some(1));
app.data.radarr_data.edit_collection_modal = Some(edit_collection_modal); app.data.radarr_data.edit_collection_modal = Some(edit_collection_modal);
app.data.radarr_data.collections.set_items(vec![Collection { app.data.radarr_data.collections.set_items(vec![
monitored: false, Collection {
search_on_add: false, id: 999,
..collection() ..collection()
}]); },
Collection {
monitored: false,
search_on_add: false,
..collection()
},
]);
app.data.radarr_data.collections.select_index(Some(1));
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_collection_params = EditCollectionParams { let expected_edit_collection_params = EditCollectionParams {
collection_id: 123, collection_id: 123,
monitored: Some(false), monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced), minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(1111), quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()), root_folder_path: Some("/nfs/Test Path".to_owned()),
search_on_add: Some(false), search_on_add: Some(false),
}; };
@@ -1034,19 +1064,34 @@ mod tests {
edit_collection_modal edit_collection_modal
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
edit_collection_modal
.quality_profile_list
.state
.select(Some(1));
edit_collection_modal
.minimum_availability_list
.state
.select(Some(1));
app.data.radarr_data.edit_collection_modal = Some(edit_collection_modal); app.data.radarr_data.edit_collection_modal = Some(edit_collection_modal);
app.data.radarr_data.collections.set_items(vec![Collection { app.data.radarr_data.collections.set_items(vec![
monitored: false, Collection {
search_on_add: false, id: 999,
..collection() ..collection()
}]); },
Collection {
monitored: false,
search_on_add: false,
..collection()
},
]);
app.data.radarr_data.collections.select_index(Some(1));
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_collection_params = EditCollectionParams { let expected_edit_collection_params = EditCollectionParams {
collection_id: 123, collection_id: 123,
monitored: Some(false), monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced), minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(1111), quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()), root_folder_path: Some("/nfs/Test Path".to_owned()),
search_on_add: Some(false), search_on_add: Some(false),
}; };
@@ -136,7 +136,7 @@ mod tests {
#[case( #[case(
ActiveRadarrBlock::Downloads, ActiveRadarrBlock::Downloads,
ActiveRadarrBlock::DeleteDownloadPrompt, ActiveRadarrBlock::DeleteDownloadPrompt,
RadarrEvent::DeleteDownload(1) RadarrEvent::DeleteDownload(2)
)] )]
#[case( #[case(
ActiveRadarrBlock::Downloads, ActiveRadarrBlock::Downloads,
@@ -149,11 +149,15 @@ mod tests {
#[case] expected_action: RadarrEvent, #[case] expected_action: RadarrEvent,
) { ) {
let mut app = App::test_default(); let mut app = App::test_default();
app app.data.radarr_data.downloads.set_items(vec![
.data download_record(),
.radarr_data DownloadRecord {
.downloads id: 2,
.set_items(vec![download_record()]); title: "Test Download Title 2".to_owned(),
..download_record()
},
]);
app.data.radarr_data.downloads.select_index(Some(1));
app.data.radarr_data.prompt_confirm = true; app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(base_route.into()); app.push_navigation_stack(base_route.into());
app.push_navigation_stack(prompt_block.into()); app.push_navigation_stack(prompt_block.into());
@@ -332,7 +336,7 @@ mod tests {
#[case( #[case(
ActiveRadarrBlock::Downloads, ActiveRadarrBlock::Downloads,
ActiveRadarrBlock::DeleteDownloadPrompt, ActiveRadarrBlock::DeleteDownloadPrompt,
RadarrEvent::DeleteDownload(1) RadarrEvent::DeleteDownload(2)
)] )]
#[case( #[case(
ActiveRadarrBlock::Downloads, ActiveRadarrBlock::Downloads,
@@ -345,11 +349,15 @@ mod tests {
#[case] expected_action: RadarrEvent, #[case] expected_action: RadarrEvent,
) { ) {
let mut app = App::test_default(); let mut app = App::test_default();
app app.data.radarr_data.downloads.set_items(vec![
.data download_record(),
.radarr_data DownloadRecord {
.downloads id: 2,
.set_items(vec![download_record()]); title: "Test Download Title 2".to_owned(),
..download_record()
},
]);
app.data.radarr_data.downloads.select_index(Some(1));
app.push_navigation_stack(base_route.into()); app.push_navigation_stack(base_route.into());
app.push_navigation_stack(prompt_block.into()); app.push_navigation_stack(prompt_block.into());
@@ -403,11 +411,15 @@ mod tests {
#[test] #[test]
fn test_extract_download_id() { fn test_extract_download_id() {
let mut app = App::test_default(); let mut app = App::test_default();
app app.data.radarr_data.downloads.set_items(vec![
.data download_record(),
.radarr_data DownloadRecord {
.downloads id: 2,
.set_items(vec![download_record()]); title: "Test Download Title 2".to_owned(),
..download_record()
},
]);
app.data.radarr_data.downloads.select_index(Some(1));
let download_id = DownloadsHandler::new( let download_id = DownloadsHandler::new(
DEFAULT_KEYBINDINGS.esc.key, DEFAULT_KEYBINDINGS.esc.key,
@@ -417,7 +429,7 @@ mod tests {
) )
.extract_download_id(); .extract_download_id();
assert_eq!(download_id, 1); assert_eq!(download_id, 2);
} }
#[test] #[test]
@@ -199,6 +199,40 @@ mod tests {
assert_eq!(app.get_current_route(), ActiveRadarrBlock::History.into()); assert_eq!(app.get_current_route(), ActiveRadarrBlock::History.into());
assert!(!app.should_refresh); assert!(!app.should_refresh);
} }
#[test]
fn test_search_history_key() {
let mut app = App::test_default();
app.data.radarr_data.history.set_items(history_vec());
app.push_navigation_stack(ActiveRadarrBlock::History.into());
HistoryHandler::new(
DEFAULT_KEYBINDINGS.search.key,
&mut app,
ActiveRadarrBlock::History,
None,
)
.handle();
assert_navigation_pushed!(app, ActiveRadarrBlock::SearchHistory.into());
}
#[test]
fn test_filter_history_key() {
let mut app = App::test_default();
app.data.radarr_data.history.set_items(history_vec());
app.push_navigation_stack(ActiveRadarrBlock::History.into());
HistoryHandler::new(
DEFAULT_KEYBINDINGS.filter.key,
&mut app,
ActiveRadarrBlock::History,
None,
)
.handle();
assert_navigation_pushed!(app, ActiveRadarrBlock::FilterHistory.into());
}
} }
#[test] #[test]
@@ -11,7 +11,7 @@ mod tests {
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::indexer; use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::indexer;
use crate::models::servarr_data::modals::EditIndexerModal; use crate::models::servarr_data::modals::EditIndexerModal;
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, EDIT_INDEXER_BLOCKS}; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, EDIT_INDEXER_BLOCKS};
use crate::models::servarr_models::EditIndexerParams; use crate::models::servarr_models::{EditIndexerParams, Indexer};
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use rstest::rstest; use rstest::rstest;
use strum::IntoEnumIterator; use strum::IntoEnumIterator;
@@ -916,9 +916,14 @@ mod tests {
priority: 25, priority: 25,
}; };
app.data.radarr_data.edit_indexer_modal = Some(edit_indexer_modal); app.data.radarr_data.edit_indexer_modal = Some(edit_indexer_modal);
app.data.radarr_data.indexers.set_items(vec![indexer()]); app
.data
.radarr_data
.indexers
.set_items(vec![indexer(), Indexer { id: 2, ..indexer() }]);
app.data.radarr_data.indexers.select_index(Some(1));
let expected_edit_indexer_params = EditIndexerParams { let expected_edit_indexer_params = EditIndexerParams {
indexer_id: 1, indexer_id: 2,
name: Some("Test Update".to_owned()), name: Some("Test Update".to_owned()),
enable_rss: Some(false), enable_rss: Some(false),
enable_automatic_search: Some(false), enable_automatic_search: Some(false),
@@ -1759,9 +1764,14 @@ mod tests {
priority: 25, priority: 25,
}; };
app.data.radarr_data.edit_indexer_modal = Some(edit_indexer_modal); app.data.radarr_data.edit_indexer_modal = Some(edit_indexer_modal);
app.data.radarr_data.indexers.set_items(vec![indexer()]); app
.data
.radarr_data
.indexers
.set_items(vec![indexer(), Indexer { id: 2, ..indexer() }]);
app.data.radarr_data.indexers.select_index(Some(1));
let expected_edit_indexer_params = EditIndexerParams { let expected_edit_indexer_params = EditIndexerParams {
indexer_id: 1, indexer_id: 2,
name: Some("Test Update".to_owned()), name: Some("Test Update".to_owned()),
enable_rss: Some(false), enable_rss: Some(false),
enable_automatic_search: Some(false), enable_automatic_search: Some(false),
@@ -1837,9 +1847,14 @@ mod tests {
priority: 25, priority: 25,
}; };
app.data.radarr_data.edit_indexer_modal = Some(edit_indexer_modal); app.data.radarr_data.edit_indexer_modal = Some(edit_indexer_modal);
app.data.radarr_data.indexers.set_items(vec![indexer()]); app
.data
.radarr_data
.indexers
.set_items(vec![indexer(), Indexer { id: 2, ..indexer() }]);
app.data.radarr_data.indexers.select_index(Some(1));
let expected_edit_indexer_params = EditIndexerParams { let expected_edit_indexer_params = EditIndexerParams {
indexer_id: 1, indexer_id: 2,
name: Some("Test Update".to_owned()), name: Some("Test Update".to_owned()),
enable_rss: Some(false), enable_rss: Some(false),
enable_automatic_search: Some(false), enable_automatic_search: Some(false),
@@ -143,6 +143,11 @@ mod tests {
} else { } else {
"usenet".to_owned() "usenet".to_owned()
}; };
let other_protocol = if torrent_protocol {
"usenet".to_owned()
} else {
"torrent".to_owned()
};
let mut expected_edit_indexer_modal = EditIndexerModal { let mut expected_edit_indexer_modal = EditIndexerModal {
name: "Test".into(), name: "Test".into(),
enable_rss: Some(true), enable_rss: Some(true),
@@ -186,7 +191,14 @@ mod tests {
fields: Some(fields), fields: Some(fields),
..Indexer::default() ..Indexer::default()
}; };
radarr_data.indexers.set_items(vec![indexer]); radarr_data.indexers.set_items(vec![
Indexer {
protocol: other_protocol,
..Indexer::default()
},
indexer,
]);
radarr_data.indexers.select_index(Some(1));
app.data.radarr_data = radarr_data; app.data.radarr_data = radarr_data;
IndexersHandler::new(SUBMIT_KEY, &mut app, ActiveRadarrBlock::Indexers, None).handle(); IndexersHandler::new(SUBMIT_KEY, &mut app, ActiveRadarrBlock::Indexers, None).handle();
@@ -233,7 +245,12 @@ mod tests {
#[test] #[test]
fn test_delete_indexer_prompt_confirm_submit() { fn test_delete_indexer_prompt_confirm_submit() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.indexers.set_items(vec![indexer()]); app
.data
.radarr_data
.indexers
.set_items(vec![indexer(), Indexer { id: 2, ..indexer() }]);
app.data.radarr_data.indexers.select_index(Some(1));
app.data.radarr_data.prompt_confirm = true; app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(ActiveRadarrBlock::Indexers.into()); app.push_navigation_stack(ActiveRadarrBlock::Indexers.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into());
@@ -249,7 +266,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm); assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::DeleteIndexer(1) &RadarrEvent::DeleteIndexer(2)
); );
assert_navigation_popped!(app, ActiveRadarrBlock::Indexers.into()); assert_navigation_popped!(app, ActiveRadarrBlock::Indexers.into());
} }
@@ -523,7 +540,12 @@ mod tests {
#[test] #[test]
fn test_delete_indexer_prompt_confirm() { fn test_delete_indexer_prompt_confirm() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.indexers.set_items(vec![indexer()]); app
.data
.radarr_data
.indexers
.set_items(vec![indexer(), Indexer { id: 2, ..indexer() }]);
app.data.radarr_data.indexers.select_index(Some(1));
app.push_navigation_stack(ActiveRadarrBlock::Indexers.into()); app.push_navigation_stack(ActiveRadarrBlock::Indexers.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into());
@@ -538,7 +560,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm); assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::DeleteIndexer(1) &RadarrEvent::DeleteIndexer(2)
); );
assert_navigation_popped!(app, ActiveRadarrBlock::Indexers.into()); assert_navigation_popped!(app, ActiveRadarrBlock::Indexers.into());
} }
@@ -17,7 +17,9 @@ mod tests {
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::add_movie_body; use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::add_movie_body;
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::collection_movie; use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::collection_movie;
use crate::models::HorizontallyScrollableText; use crate::models::HorizontallyScrollableText;
use crate::models::radarr_models::{AddMovieSearchResult, MinimumAvailability, MovieMonitor}; use crate::models::radarr_models::{
AddMovieSearchResult, CollectionMovie, MinimumAvailability, MovieMonitor,
};
use crate::models::servarr_data::radarr::modals::AddMovieModal; use crate::models::servarr_data::radarr::modals::AddMovieModal;
use crate::models::servarr_data::radarr::radarr_data::{ADD_MOVIE_BLOCKS, ActiveRadarrBlock}; use crate::models::servarr_data::radarr::radarr_data::{ADD_MOVIE_BLOCKS, ActiveRadarrBlock};
use crate::models::servarr_models::RootFolder; use crate::models::servarr_models::RootFolder;
@@ -942,7 +944,14 @@ mod tests {
fn test_add_movie_search_results_submit_movie_already_in_library() { fn test_add_movie_search_results_submit_movie_already_in_library() {
let mut app = App::test_default(); let mut app = App::test_default();
let mut add_searched_movies = StatefulTable::default(); let mut add_searched_movies = StatefulTable::default();
add_searched_movies.set_items(vec![AddMovieSearchResult::default()]); add_searched_movies.set_items(vec![
AddMovieSearchResult {
tmdb_id: 5678,
..AddMovieSearchResult::default()
},
AddMovieSearchResult::default(),
]);
add_searched_movies.select_index(Some(1));
app.data.radarr_data.add_searched_movies = Some(add_searched_movies); app.data.radarr_data.add_searched_movies = Some(add_searched_movies);
app app
.data .data
@@ -1026,16 +1035,22 @@ mod tests {
add_movie_modal.root_folder_list.state.select(Some(1)); add_movie_modal.root_folder_list.state.select(Some(1));
add_movie_modal add_movie_modal
.quality_profile_list .quality_profile_list
.set_items(vec!["HD - 1080p".to_owned()]); .set_items(vec!["Any".to_owned(), "HD - 1080p".to_owned()]);
add_movie_modal add_movie_modal
.monitor_list .monitor_list
.set_items(Vec::from_iter(MovieMonitor::iter())); .set_items(Vec::from_iter(MovieMonitor::iter()));
add_movie_modal add_movie_modal
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
add_movie_modal.quality_profile_list.state.select(Some(1));
add_movie_modal.monitor_list.state.select(Some(1));
add_movie_modal
.minimum_availability_list
.state
.select(Some(1));
app.data.radarr_data.add_movie_modal = Some(add_movie_modal); app.data.radarr_data.add_movie_modal = Some(add_movie_modal);
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let context = if movie_details_context { let context = if movie_details_context {
app app
.data .data
@@ -1461,16 +1476,22 @@ mod tests {
add_movie_modal.root_folder_list.state.select(Some(1)); add_movie_modal.root_folder_list.state.select(Some(1));
add_movie_modal add_movie_modal
.quality_profile_list .quality_profile_list
.set_items(vec!["HD - 1080p".to_owned()]); .set_items(vec!["Any".to_owned(), "HD - 1080p".to_owned()]);
add_movie_modal add_movie_modal
.monitor_list .monitor_list
.set_items(Vec::from_iter(MovieMonitor::iter())); .set_items(Vec::from_iter(MovieMonitor::iter()));
add_movie_modal add_movie_modal
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
add_movie_modal.quality_profile_list.state.select(Some(1));
add_movie_modal.monitor_list.state.select(Some(1));
add_movie_modal
.minimum_availability_list
.state
.select(Some(1));
app.data.radarr_data.add_movie_modal = Some(add_movie_modal); app.data.radarr_data.add_movie_modal = Some(add_movie_modal);
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let context = if movie_details_context { let context = if movie_details_context {
app app
.data .data
@@ -1572,25 +1593,44 @@ mod tests {
add_movie_modal.root_folder_list.state.select(Some(1)); add_movie_modal.root_folder_list.state.select(Some(1));
add_movie_modal add_movie_modal
.quality_profile_list .quality_profile_list
.set_items(vec!["HD - 1080p".to_owned()]); .set_items(vec!["Any".to_owned(), "HD - 1080p".to_owned()]);
add_movie_modal add_movie_modal
.monitor_list .monitor_list
.set_items(Vec::from_iter(MovieMonitor::iter())); .set_items(Vec::from_iter(MovieMonitor::iter()));
add_movie_modal add_movie_modal
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
add_movie_modal.quality_profile_list.state.select(Some(1));
add_movie_modal.monitor_list.state.select(Some(1));
add_movie_modal
.minimum_availability_list
.state
.select(Some(1));
app.data.radarr_data.add_movie_modal = Some(add_movie_modal); app.data.radarr_data.add_movie_modal = Some(add_movie_modal);
app.data.radarr_data.quality_profile_map = BiMap::from_iter([(2222, "HD - 1080p".to_owned())]); app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let context = if movie_details_context { let context = if movie_details_context {
app app.data.radarr_data.collection_movies.set_items(vec![
.data CollectionMovie {
.radarr_data tmdb_id: 5678,
.collection_movies title: HorizontallyScrollableText::from("Some Other Movie"),
.set_items(vec![collection_movie()]); ..CollectionMovie::default()
},
collection_movie(),
]);
app.data.radarr_data.collection_movies.select_index(Some(1));
Some(ActiveRadarrBlock::CollectionDetails) Some(ActiveRadarrBlock::CollectionDetails)
} else { } else {
let mut add_searched_movies = StatefulTable::default(); let mut add_searched_movies = StatefulTable::default();
add_searched_movies.set_items(vec![add_movie_search_result()]); add_searched_movies.set_items(vec![
AddMovieSearchResult {
tmdb_id: 5678,
title: HorizontallyScrollableText::from("Some Other Movie"),
..AddMovieSearchResult::default()
},
add_movie_search_result(),
]);
add_searched_movies.select_index(Some(1));
app.data.radarr_data.add_searched_movies = Some(add_searched_movies); app.data.radarr_data.add_searched_movies = Some(add_searched_movies);
None None
}; };
@@ -10,7 +10,7 @@ mod tests {
use crate::handlers::KeyEventHandler; use crate::handlers::KeyEventHandler;
use crate::handlers::radarr_handlers::library::delete_movie_handler::DeleteMovieHandler; use crate::handlers::radarr_handlers::library::delete_movie_handler::DeleteMovieHandler;
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::movie; use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::movie;
use crate::models::radarr_models::DeleteMovieParams; use crate::models::radarr_models::{DeleteMovieParams, Movie};
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS}; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DELETE_MOVIE_BLOCKS};
mod test_handle_scroll_up_and_down { mod test_handle_scroll_up_and_down {
@@ -131,7 +131,12 @@ mod tests {
}; };
app.push_navigation_stack(ActiveRadarrBlock::Movies.into()); app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteMoviePrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::DeleteMoviePrompt.into());
app.data.radarr_data.movies.set_items(vec![movie()]); app
.data
.radarr_data
.movies
.set_items(vec![Movie { id: 999, ..movie() }, movie()]);
app.data.radarr_data.movies.select_index(Some(1));
app.data.radarr_data.prompt_confirm = true; app.data.radarr_data.prompt_confirm = true;
app.data.radarr_data.delete_movie_files = true; app.data.radarr_data.delete_movie_files = true;
app.data.radarr_data.add_list_exclusion = true; app.data.radarr_data.add_list_exclusion = true;
@@ -275,7 +280,12 @@ mod tests {
}; };
app.push_navigation_stack(ActiveRadarrBlock::Movies.into()); app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteMoviePrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::DeleteMoviePrompt.into());
app.data.radarr_data.movies.set_items(vec![movie()]); app
.data
.radarr_data
.movies
.set_items(vec![Movie { id: 999, ..movie() }, movie()]);
app.data.radarr_data.movies.select_index(Some(1));
app.data.radarr_data.delete_movie_files = true; app.data.radarr_data.delete_movie_files = true;
app.data.radarr_data.add_list_exclusion = true; app.data.radarr_data.add_list_exclusion = true;
app.data.radarr_data.selected_block = BlockSelectionState::new(DELETE_MOVIE_SELECTION_BLOCKS); app.data.radarr_data.selected_block = BlockSelectionState::new(DELETE_MOVIE_SELECTION_BLOCKS);
@@ -338,7 +348,12 @@ mod tests {
#[test] #[test]
fn test_build_delete_movie_params() { fn test_build_delete_movie_params() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.movies.set_items(vec![movie()]); app
.data
.radarr_data
.movies
.set_items(vec![Movie { id: 999, ..movie() }, movie()]);
app.data.radarr_data.movies.select_index(Some(1));
app.data.radarr_data.delete_movie_files = true; app.data.radarr_data.delete_movie_files = true;
app.data.radarr_data.add_list_exclusion = true; app.data.radarr_data.add_list_exclusion = true;
let expected_delete_movie_params = DeleteMovieParams { let expected_delete_movie_params = DeleteMovieParams {
@@ -656,18 +656,24 @@ mod tests {
edit_movie edit_movie
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
edit_movie.quality_profile_list.state.select(Some(1));
edit_movie.minimum_availability_list.state.select(Some(1));
app.data.radarr_data.edit_movie_modal = Some(edit_movie); app.data.radarr_data.edit_movie_modal = Some(edit_movie);
app.data.radarr_data.movies.set_items(vec![Movie { app.data.radarr_data.movies.set_items(vec![
monitored: false, Movie { id: 999, ..movie() },
..movie() Movie {
}]); monitored: false,
..movie()
},
]);
app.data.radarr_data.movies.select_index(Some(1));
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_movie_params = EditMovieParams { let expected_edit_movie_params = EditMovieParams {
movie_id: 1, movie_id: 1,
monitored: Some(false), monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced), minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(1111), quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()), root_folder_path: Some("/nfs/Test Path".to_owned()),
tag_input_string: Some("usenet, testing".into()), tag_input_string: Some("usenet, testing".into()),
..EditMovieParams::default() ..EditMovieParams::default()
@@ -1089,18 +1095,24 @@ mod tests {
edit_movie edit_movie
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
edit_movie.quality_profile_list.state.select(Some(1));
edit_movie.minimum_availability_list.state.select(Some(1));
app.data.radarr_data.edit_movie_modal = Some(edit_movie); app.data.radarr_data.edit_movie_modal = Some(edit_movie);
app.data.radarr_data.movies.set_items(vec![Movie { app.data.radarr_data.movies.set_items(vec![
monitored: false, Movie { id: 999, ..movie() },
..movie() Movie {
}]); monitored: false,
..movie()
},
]);
app.data.radarr_data.movies.select_index(Some(1));
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_movie_params = EditMovieParams { let expected_edit_movie_params = EditMovieParams {
movie_id: 1, movie_id: 1,
monitored: Some(false), monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced), minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(1111), quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()), root_folder_path: Some("/nfs/Test Path".to_owned()),
tag_input_string: Some("usenet, testing".into()), tag_input_string: Some("usenet, testing".into()),
..EditMovieParams::default() ..EditMovieParams::default()
@@ -1177,18 +1189,24 @@ mod tests {
edit_movie edit_movie
.minimum_availability_list .minimum_availability_list
.set_items(Vec::from_iter(MinimumAvailability::iter())); .set_items(Vec::from_iter(MinimumAvailability::iter()));
edit_movie.quality_profile_list.state.select(Some(1));
edit_movie.minimum_availability_list.state.select(Some(1));
app.data.radarr_data.edit_movie_modal = Some(edit_movie); app.data.radarr_data.edit_movie_modal = Some(edit_movie);
app.data.radarr_data.movies.set_items(vec![Movie { app.data.radarr_data.movies.set_items(vec![
monitored: false, Movie { id: 999, ..movie() },
..movie() Movie {
}]); monitored: false,
..movie()
},
]);
app.data.radarr_data.movies.select_index(Some(1));
app.data.radarr_data.quality_profile_map = app.data.radarr_data.quality_profile_map =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]); BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_movie_params = EditMovieParams { let expected_edit_movie_params = EditMovieParams {
movie_id: 1, movie_id: 1,
monitored: Some(false), monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced), minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(1111), quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()), root_folder_path: Some("/nfs/Test Path".to_owned()),
tag_input_string: Some("usenet, testing".into()), tag_input_string: Some("usenet, testing".into()),
..EditMovieParams::default() ..EditMovieParams::default()
@@ -391,6 +391,12 @@ mod tests {
fn test_toggle_monitoring_key() { fn test_toggle_monitoring_key() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data = create_test_radarr_data(); app.data.radarr_data = create_test_radarr_data();
app
.data
.radarr_data
.movies
.set_items(vec![movie(), Movie { id: 2, ..movie() }]);
app.data.radarr_data.movies.select_index(Some(1));
app.push_navigation_stack(ActiveRadarrBlock::Movies.into()); app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
app.is_routing = false; app.is_routing = false;
@@ -407,7 +413,7 @@ mod tests {
assert!(app.is_routing); assert!(app.is_routing);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::ToggleMovieMonitoring(0) &RadarrEvent::ToggleMovieMonitoring(2)
); );
} }
@@ -519,6 +525,48 @@ mod tests {
assert!(!app.should_refresh); assert!(!app.should_refresh);
} }
#[test]
fn test_search_movies_key() {
let mut app = App::test_default();
app
.data
.radarr_data
.movies
.set_items(vec![Movie::default()]);
app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
LibraryHandler::new(
DEFAULT_KEYBINDINGS.search.key,
&mut app,
ActiveRadarrBlock::Movies,
None,
)
.handle();
assert_navigation_pushed!(app, ActiveRadarrBlock::SearchMovie.into());
}
#[test]
fn test_filter_movies_key() {
let mut app = App::test_default();
app
.data
.radarr_data
.movies
.set_items(vec![Movie::default()]);
app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
LibraryHandler::new(
DEFAULT_KEYBINDINGS.filter.key,
&mut app,
ActiveRadarrBlock::Movies,
None,
)
.handle();
assert_navigation_pushed!(app, ActiveRadarrBlock::FilterMovies.into());
}
#[test] #[test]
fn test_update_all_movies_prompt_confirm() { fn test_update_all_movies_prompt_confirm() {
let mut app = App::test_default(); let mut app = App::test_default();
@@ -621,7 +669,12 @@ mod tests {
#[test] #[test]
fn test_extract_movie_id() { fn test_extract_movie_id() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.movies.set_items(vec![movie()]); app
.data
.radarr_data
.movies
.set_items(vec![movie(), Movie { id: 2, ..movie() }]);
app.data.radarr_data.movies.select_index(Some(1));
let movie_id = LibraryHandler::new( let movie_id = LibraryHandler::new(
DEFAULT_KEYBINDINGS.esc.key, DEFAULT_KEYBINDINGS.esc.key,
@@ -631,7 +684,7 @@ mod tests {
) )
.extract_movie_id(); .extract_movie_id();
assert_eq!(movie_id, 1); assert_eq!(movie_id, 2);
} }
#[test] #[test]
@@ -17,7 +17,7 @@ mod tests {
MovieDetailsHandler, releases_sorting_options, MovieDetailsHandler, releases_sorting_options,
}; };
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::{movie, release}; use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::{movie, release};
use crate::models::radarr_models::{Credit, MovieHistoryItem}; use crate::models::radarr_models::{Credit, Movie, MovieHistoryItem};
use crate::models::radarr_models::{RadarrRelease, RadarrReleaseDownloadBody}; use crate::models::radarr_models::{RadarrRelease, RadarrReleaseDownloadBody};
use crate::models::servarr_data::radarr::modals::MovieDetailsModal; use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS}; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS};
@@ -819,11 +819,22 @@ mod tests {
fn test_build_radarr_release_download_body() { fn test_build_radarr_release_download_body() {
let mut app = App::test_default(); let mut app = App::test_default();
let mut movie_details_modal = MovieDetailsModal::default(); let mut movie_details_modal = MovieDetailsModal::default();
movie_details_modal movie_details_modal.movie_releases.set_items(vec![
.movie_releases RadarrRelease {
.set_items(vec![release()]); guid: "9999".to_owned(),
indexer_id: 99,
..release()
},
release(),
]);
movie_details_modal.movie_releases.select_index(Some(1));
app.data.radarr_data.movie_details_modal = Some(movie_details_modal); 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 { id: 999, ..movie() }, movie()]);
app.data.radarr_data.movies.select_index(Some(1));
let expected_body = RadarrReleaseDownloadBody { let expected_body = RadarrReleaseDownloadBody {
guid: "1234".to_owned(), guid: "1234".to_owned(),
indexer_id: 2, indexer_id: 2,
@@ -844,7 +855,12 @@ mod tests {
#[test] #[test]
fn test_extract_movie_id() { fn test_extract_movie_id() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.movies.set_items(vec![movie()]); app
.data
.radarr_data
.movies
.set_items(vec![Movie { id: 999, ..movie() }, movie()]);
app.data.radarr_data.movies.select_index(Some(1));
let movie_id = MovieDetailsHandler::new( let movie_id = MovieDetailsHandler::new(
DEFAULT_KEYBINDINGS.esc.key, DEFAULT_KEYBINDINGS.esc.key,
@@ -475,13 +475,13 @@ pub(in crate::handlers::radarr_handlers) mod utils {
tmdb_id: 1234, tmdb_id: 1234,
title: "Test".to_owned(), title: "Test".to_owned(),
root_folder_path: "/nfs2".to_owned(), root_folder_path: "/nfs2".to_owned(),
minimum_availability: MinimumAvailability::Announced, minimum_availability: MinimumAvailability::InCinemas,
monitored: true, monitored: true,
quality_profile_id: 2222, quality_profile_id: 2222,
tags: Vec::new(), tags: Vec::new(),
tag_input_string: Some("usenet, testing".into()), tag_input_string: Some("usenet, testing".into()),
add_options: AddMovieOptions { add_options: AddMovieOptions {
monitor: MovieMonitor::MovieOnly, monitor: MovieMonitor::MovieAndCollection,
search_for_movie: true, search_for_movie: true,
}, },
} }
@@ -314,11 +314,15 @@ mod tests {
#[test] #[test]
fn test_delete_root_folder_prompt_confirm_submit() { fn test_delete_root_folder_prompt_confirm_submit() {
let mut app = App::test_default(); let mut app = App::test_default();
app app.data.radarr_data.root_folders.set_items(vec![
.data root_folder(),
.radarr_data RootFolder {
.root_folders id: 2,
.set_items(vec![root_folder()]); path: "/nfs2".to_owned(),
..root_folder()
},
]);
app.data.radarr_data.root_folders.select_index(Some(1));
app.data.radarr_data.prompt_confirm = true; app.data.radarr_data.prompt_confirm = true;
app.push_navigation_stack(ActiveRadarrBlock::RootFolders.into()); app.push_navigation_stack(ActiveRadarrBlock::RootFolders.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteRootFolderPrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::DeleteRootFolderPrompt.into());
@@ -334,7 +338,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm); assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::DeleteRootFolder(1) &RadarrEvent::DeleteRootFolder(2)
); );
assert_navigation_popped!(app, ActiveRadarrBlock::RootFolders.into()); assert_navigation_popped!(app, ActiveRadarrBlock::RootFolders.into());
} }
@@ -583,11 +587,15 @@ mod tests {
#[test] #[test]
fn test_delete_root_folder_prompt_confirm() { fn test_delete_root_folder_prompt_confirm() {
let mut app = App::test_default(); let mut app = App::test_default();
app app.data.radarr_data.root_folders.set_items(vec![
.data root_folder(),
.radarr_data RootFolder {
.root_folders id: 2,
.set_items(vec![root_folder()]); path: "/nfs2".to_owned(),
..root_folder()
},
]);
app.data.radarr_data.root_folders.select_index(Some(1));
app.push_navigation_stack(ActiveRadarrBlock::RootFolders.into()); app.push_navigation_stack(ActiveRadarrBlock::RootFolders.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteRootFolderPrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::DeleteRootFolderPrompt.into());
@@ -602,7 +610,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm); assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::DeleteRootFolder(1) &RadarrEvent::DeleteRootFolder(2)
); );
assert_navigation_popped!(app, ActiveRadarrBlock::RootFolders.into()); assert_navigation_popped!(app, ActiveRadarrBlock::RootFolders.into());
} }
@@ -677,10 +677,17 @@ mod tests {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.updates = ScrollableText::with_string("Test".to_owned()); app.data.radarr_data.updates = ScrollableText::with_string("Test".to_owned());
app.data.radarr_data.prompt_confirm = true; app.data.radarr_data.prompt_confirm = true;
app.data.radarr_data.tasks.set_items(vec![RadarrTask { app.data.radarr_data.tasks.set_items(vec![
task_name: RadarrTaskName::default(), RadarrTask {
..RadarrTask::default() task_name: RadarrTaskName::Backup,
}]); ..RadarrTask::default()
},
RadarrTask {
task_name: RadarrTaskName::RefreshMovie,
..RadarrTask::default()
},
]);
app.data.radarr_data.tasks.select_index(Some(1));
app.push_navigation_stack(ActiveRadarrBlock::SystemTasks.into()); app.push_navigation_stack(ActiveRadarrBlock::SystemTasks.into());
app.push_navigation_stack(ActiveRadarrBlock::SystemTaskStartConfirmPrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::SystemTaskStartConfirmPrompt.into());
@@ -695,7 +702,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm); assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::StartTask(RadarrTaskName::default()) &RadarrEvent::StartTask(RadarrTaskName::RefreshMovie)
); );
assert_navigation_popped!(app, ActiveRadarrBlock::SystemTasks.into()); assert_navigation_popped!(app, ActiveRadarrBlock::SystemTasks.into());
} }
@@ -891,10 +898,17 @@ mod tests {
fn test_system_tasks_start_task_prompt_confirm() { fn test_system_tasks_start_task_prompt_confirm() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.updates = ScrollableText::with_string("Test".to_owned()); app.data.radarr_data.updates = ScrollableText::with_string("Test".to_owned());
app.data.radarr_data.tasks.set_items(vec![RadarrTask { app.data.radarr_data.tasks.set_items(vec![
task_name: RadarrTaskName::default(), RadarrTask {
..RadarrTask::default() task_name: RadarrTaskName::Backup,
}]); ..RadarrTask::default()
},
RadarrTask {
task_name: RadarrTaskName::RefreshMovie,
..RadarrTask::default()
},
]);
app.data.radarr_data.tasks.select_index(Some(1));
app.push_navigation_stack(ActiveRadarrBlock::SystemTasks.into()); app.push_navigation_stack(ActiveRadarrBlock::SystemTasks.into());
app.push_navigation_stack(ActiveRadarrBlock::SystemTaskStartConfirmPrompt.into()); app.push_navigation_stack(ActiveRadarrBlock::SystemTaskStartConfirmPrompt.into());
@@ -909,7 +923,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm); assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!( assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action, &app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::StartTask(RadarrTaskName::default()) &RadarrEvent::StartTask(RadarrTaskName::RefreshMovie)
); );
assert_navigation_popped!(app, ActiveRadarrBlock::SystemTasks.into()); assert_navigation_popped!(app, ActiveRadarrBlock::SystemTasks.into());
} }
@@ -948,10 +962,17 @@ mod tests {
#[test] #[test]
fn test_extract_task_name() { fn test_extract_task_name() {
let mut app = App::test_default(); let mut app = App::test_default();
app.data.radarr_data.tasks.set_items(vec![RadarrTask { app.data.radarr_data.tasks.set_items(vec![
task_name: RadarrTaskName::default(), RadarrTask {
..RadarrTask::default() task_name: RadarrTaskName::Backup,
}]); ..RadarrTask::default()
},
RadarrTask {
task_name: RadarrTaskName::RefreshMovie,
..RadarrTask::default()
},
]);
app.data.radarr_data.tasks.select_index(Some(1));
let task_name = SystemDetailsHandler::new( let task_name = SystemDetailsHandler::new(
DEFAULT_KEYBINDINGS.esc.key, DEFAULT_KEYBINDINGS.esc.key,
@@ -961,7 +982,7 @@ mod tests {
) )
.extract_task_name(); .extract_task_name();
assert_eq!(task_name, RadarrTaskName::default()); assert_eq!(task_name, RadarrTaskName::RefreshMovie);
} }
#[test] #[test]