From f141e53f30025daccaa6ae9e14d04819f6c5f25d Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Wed, 9 Sep 2026 15:51:10 -0600 Subject: [PATCH] test(lidarr): pin table search, filter and selection behaviour The search and filter blocks a table configures were asserted nowhere, so transposing them was invisible. Selections were also left at index 0 in every test, which made current_selection() and items[0] indistinguishable, including for the profile lists inside the edit and add prompts. --- .../history/history_handler_tests.rs | 34 ++++ .../library/add_artist_handler_tests.rs | 145 ++++++++++++++---- .../library/album_details_handler_tests.rs | 48 ++++++ .../library/artist_details_handler_tests.rs | 65 +++++++- .../library/edit_artist_handler_tests.rs | 90 +++++++---- .../library/library_handler_tests.rs | 43 +++++- .../library/track_details_handler_tests.rs | 32 ++++ .../add_root_folder_handler_tests.rs | 42 +++-- 8 files changed, 419 insertions(+), 80 deletions(-) diff --git a/src/handlers/lidarr_handlers/history/history_handler_tests.rs b/src/handlers/lidarr_handlers/history/history_handler_tests.rs index 75c4e6fb..046b77b5 100644 --- a/src/handlers/lidarr_handlers/history/history_handler_tests.rs +++ b/src/handlers/lidarr_handlers/history/history_handler_tests.rs @@ -196,6 +196,40 @@ mod tests { assert_eq!(app.get_current_route(), ActiveLidarrBlock::History.into()); assert!(!app.should_refresh); } + + #[test] + fn test_search_history_key() { + let mut app = App::test_default(); + app.data.lidarr_data.history.set_items(history_vec()); + app.push_navigation_stack(ActiveLidarrBlock::History.into()); + + HistoryHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::History, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchHistory.into()); + } + + #[test] + fn test_filter_history_key() { + let mut app = App::test_default(); + app.data.lidarr_data.history.set_items(history_vec()); + app.push_navigation_stack(ActiveLidarrBlock::History.into()); + + HistoryHandler::new( + DEFAULT_KEYBINDINGS.filter.key, + &mut app, + ActiveLidarrBlock::History, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::FilterHistory.into()); + } } #[test] diff --git a/src/handlers/lidarr_handlers/library/add_artist_handler_tests.rs b/src/handlers/lidarr_handlers/library/add_artist_handler_tests.rs index 203089bb..308215b7 100644 --- a/src/handlers/lidarr_handlers/library/add_artist_handler_tests.rs +++ b/src/handlers/lidarr_handlers/library/add_artist_handler_tests.rs @@ -1076,10 +1076,16 @@ mod tests { .set_index(0, ADD_ARTIST_SELECTION_BLOCKS.len() - 1); app.data.lidarr_data.prompt_confirm = true; let mut add_searched_artists = StatefulTable::default(); - add_searched_artists.set_items(vec![add_artist_search_result()]); + let mut decoy_search_result = add_artist_search_result(); + decoy_search_result.foreign_artist_id = "decoy-foreign-id".to_owned(); + decoy_search_result.artist_name = "Decoy Artist".into(); + add_searched_artists.set_items(vec![decoy_search_result, add_artist_search_result()]); + add_searched_artists.select_index(Some(1)); app.data.lidarr_data.add_searched_artists = Some(add_searched_artists); - app.data.lidarr_data.quality_profile_map = BiMap::from_iter([(1, "Test".to_owned())]); - app.data.lidarr_data.metadata_profile_map = BiMap::from_iter([(1, "Test".to_owned())]); + app.data.lidarr_data.quality_profile_map = + BiMap::from_iter([(1111, "Any".to_owned()), (2222, "Lossless".to_owned())]); + app.data.lidarr_data.metadata_profile_map = + BiMap::from_iter([(3333, "None".to_owned()), (4444, "Standard".to_owned())]); app.data.lidarr_data.add_artist_modal = Some(AddArtistModal { tags: "usenet, testing".into(), ..AddArtistModal::default() @@ -1092,6 +1098,15 @@ mod tests { .unwrap() .monitor_list .set_items(Vec::from_iter(MonitorType::iter())); + app + .data + .lidarr_data + .add_artist_modal + .as_mut() + .unwrap() + .monitor_list + .state + .select(Some(1)); app .data .lidarr_data @@ -1100,6 +1115,15 @@ mod tests { .unwrap() .monitor_new_items_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + app + .data + .lidarr_data + .add_artist_modal + .as_mut() + .unwrap() + .monitor_new_items_list + .state + .select(Some(1)); app .data .lidarr_data @@ -1107,7 +1131,16 @@ mod tests { .as_mut() .unwrap() .quality_profile_list - .set_items(vec!["Test".to_owned()]); + .set_items(vec!["Any".to_owned(), "Lossless".to_owned()]); + app + .data + .lidarr_data + .add_artist_modal + .as_mut() + .unwrap() + .quality_profile_list + .state + .select(Some(1)); app .data .lidarr_data @@ -1115,7 +1148,16 @@ mod tests { .as_mut() .unwrap() .metadata_profile_list - .set_items(vec!["Test".to_owned()]); + .set_items(vec!["None".to_owned(), "Standard".to_owned()]); + app + .data + .lidarr_data + .add_artist_modal + .as_mut() + .unwrap() + .metadata_profile_list + .state + .select(Some(1)); app .data .lidarr_data @@ -1123,22 +1165,37 @@ mod tests { .as_mut() .unwrap() .root_folder_list - .set_items(vec![RootFolder { - path: "/music".to_owned(), - ..RootFolder::default() - }]); + .set_items(vec![ + RootFolder { + path: "/decoy".to_owned(), + ..RootFolder::default() + }, + RootFolder { + path: "/music".to_owned(), + ..RootFolder::default() + }, + ]); + app + .data + .lidarr_data + .add_artist_modal + .as_mut() + .unwrap() + .root_folder_list + .state + .select(Some(1)); let expected_add_artist_body = AddArtistBody { foreign_artist_id: "test-foreign-id".to_string(), artist_name: "Test Artist".to_string(), monitored: true, root_folder_path: "/music".to_string(), - quality_profile_id: 1, - metadata_profile_id: 1, + quality_profile_id: 2222, + metadata_profile_id: 4444, tags: Vec::default(), tag_input_string: Some("usenet, testing".to_owned()), add_options: AddArtistOptions { - monitor: MonitorType::All, - monitor_new_items: NewItemMonitorType::All, + monitor: MonitorType::Future, + monitor_new_items: NewItemMonitorType::None, search_for_missing_albums: true, }, }; @@ -1468,10 +1525,16 @@ mod tests { .selected_block .set_index(0, ADD_ARTIST_SELECTION_BLOCKS.len() - 1); let mut add_searched_artists = StatefulTable::default(); - add_searched_artists.set_items(vec![add_artist_search_result()]); + let mut decoy_search_result = add_artist_search_result(); + decoy_search_result.foreign_artist_id = "decoy-foreign-id".to_owned(); + decoy_search_result.artist_name = "Decoy Artist".into(); + add_searched_artists.set_items(vec![decoy_search_result, add_artist_search_result()]); + add_searched_artists.select_index(Some(1)); app.data.lidarr_data.add_searched_artists = Some(add_searched_artists); - app.data.lidarr_data.quality_profile_map = BiMap::from_iter([(1, "Test".to_owned())]); - app.data.lidarr_data.metadata_profile_map = BiMap::from_iter([(1, "Test".to_owned())]); + app.data.lidarr_data.quality_profile_map = + BiMap::from_iter([(1111, "Any".to_owned()), (2222, "Lossless".to_owned())]); + app.data.lidarr_data.metadata_profile_map = + BiMap::from_iter([(3333, "None".to_owned()), (4444, "Standard".to_owned())]); let mut add_artist_modal = AddArtistModal { tags: "usenet, testing".into(), ..AddArtistModal::default() @@ -1479,15 +1542,22 @@ mod tests { add_artist_modal .monitor_list .set_items(Vec::from_iter(MonitorType::iter())); + add_artist_modal.monitor_list.state.select(Some(1)); add_artist_modal .monitor_new_items_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + add_artist_modal + .monitor_new_items_list + .state + .select(Some(1)); add_artist_modal .quality_profile_list - .set_items(vec!["Test".to_owned()]); + .set_items(vec!["Any".to_owned(), "Lossless".to_owned()]); + add_artist_modal.quality_profile_list.state.select(Some(1)); add_artist_modal .metadata_profile_list - .set_items(vec!["Test".to_owned()]); + .set_items(vec!["None".to_owned(), "Standard".to_owned()]); + add_artist_modal.metadata_profile_list.state.select(Some(1)); add_artist_modal.root_folder_list.set_items(vec![ RootFolder { id: 1, @@ -1511,13 +1581,13 @@ mod tests { artist_name: "Test Artist".to_string(), monitored: true, root_folder_path: "/nfs2".to_string(), - quality_profile_id: 1, - metadata_profile_id: 1, + quality_profile_id: 2222, + metadata_profile_id: 4444, tags: Vec::default(), tag_input_string: Some("usenet, testing".to_owned()), add_options: AddArtistOptions { - monitor: Default::default(), - monitor_new_items: Default::default(), + monitor: MonitorType::Future, + monitor_new_items: NewItemMonitorType::None, search_for_missing_albums: true, }, }; @@ -1641,34 +1711,47 @@ mod tests { add_artist_modal.root_folder_list.state.select(Some(1)); add_artist_modal .quality_profile_list - .set_items(vec!["Lossless".to_owned()]); + .set_items(vec!["Any".to_owned(), "Lossless".to_owned()]); + add_artist_modal.quality_profile_list.state.select(Some(1)); add_artist_modal .metadata_profile_list - .set_items(vec!["Standard".to_owned()]); + .set_items(vec!["None".to_owned(), "Standard".to_owned()]); + add_artist_modal.metadata_profile_list.state.select(Some(1)); add_artist_modal .monitor_list .set_items(Vec::from_iter(MonitorType::iter())); + add_artist_modal.monitor_list.state.select(Some(1)); add_artist_modal .monitor_new_items_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + add_artist_modal + .monitor_new_items_list + .state + .select(Some(1)); app.data.lidarr_data.add_artist_modal = Some(add_artist_modal); - app.data.lidarr_data.quality_profile_map = BiMap::from_iter([(1, "Lossless".to_owned())]); - app.data.lidarr_data.metadata_profile_map = BiMap::from_iter([(1, "Standard".to_owned())]); + app.data.lidarr_data.quality_profile_map = + BiMap::from_iter([(1111, "Any".to_owned()), (2222, "Lossless".to_owned())]); + app.data.lidarr_data.metadata_profile_map = + BiMap::from_iter([(3333, "None".to_owned()), (4444, "Standard".to_owned())]); let mut add_searched_artists = StatefulTable::default(); - add_searched_artists.set_items(vec![add_artist_search_result()]); + let mut decoy_search_result = add_artist_search_result(); + decoy_search_result.foreign_artist_id = "decoy-foreign-id".to_owned(); + decoy_search_result.artist_name = "Decoy Artist".into(); + add_searched_artists.set_items(vec![decoy_search_result, add_artist_search_result()]); + add_searched_artists.select_index(Some(1)); app.data.lidarr_data.add_searched_artists = Some(add_searched_artists); let expected_add_artist_body = AddArtistBody { foreign_artist_id: "test-foreign-id".to_string(), artist_name: "Test Artist".into(), monitored: true, root_folder_path: "/nfs2".to_string(), - quality_profile_id: 1, - metadata_profile_id: 1, + quality_profile_id: 2222, + metadata_profile_id: 4444, tags: Vec::default(), tag_input_string: Some("usenet, testing".to_owned()), add_options: AddArtistOptions { - monitor: Default::default(), - monitor_new_items: Default::default(), + monitor: MonitorType::Future, + monitor_new_items: NewItemMonitorType::None, search_for_missing_albums: true, }, }; diff --git a/src/handlers/lidarr_handlers/library/album_details_handler_tests.rs b/src/handlers/lidarr_handlers/library/album_details_handler_tests.rs index f6335f09..eb3ad788 100644 --- a/src/handlers/lidarr_handlers/library/album_details_handler_tests.rs +++ b/src/handlers/lidarr_handlers/library/album_details_handler_tests.rs @@ -660,6 +660,54 @@ mod tests { }) ); } + + #[test] + fn test_search_tracks_key() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveLidarrBlock::AlbumDetails.into()); + + AlbumDetailsHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::AlbumDetails, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchTracks.into()); + } + + #[test] + fn test_search_album_history_key() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveLidarrBlock::AlbumHistory.into()); + + AlbumDetailsHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::AlbumHistory, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchAlbumHistory.into()); + } + + #[test] + fn test_filter_album_history_key() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveLidarrBlock::AlbumHistory.into()); + + AlbumDetailsHandler::new( + DEFAULT_KEYBINDINGS.filter.key, + &mut app, + ActiveLidarrBlock::AlbumHistory, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::FilterAlbumHistory.into()); + } } #[test] diff --git a/src/handlers/lidarr_handlers/library/artist_details_handler_tests.rs b/src/handlers/lidarr_handlers/library/artist_details_handler_tests.rs index 34eb1916..7670c63c 100644 --- a/src/handlers/lidarr_handlers/library/artist_details_handler_tests.rs +++ b/src/handlers/lidarr_handlers/library/artist_details_handler_tests.rs @@ -452,7 +452,7 @@ mod tests { use crate::handlers::KeyEventHandler; use crate::handlers::lidarr_handlers::library::artist_details_handler::ArtistDetailsHandler; use crate::handlers::lidarr_handlers::library::artist_overview_handler::ArtistOverviewHandler; - use crate::models::lidarr_models::Artist; + use crate::models::lidarr_models::{Album, Artist, LidarrHistoryItem}; use crate::models::servarr_data::lidarr::lidarr_data::{ ActiveLidarrBlock, EDIT_ARTIST_SELECTION_BLOCKS, }; @@ -966,6 +966,69 @@ mod tests { })) ); } + + #[test] + fn test_search_albums_key() { + let mut app = App::test_default(); + app + .data + .lidarr_data + .albums + .set_items(vec![Album::default()]); + app.push_navigation_stack(ActiveLidarrBlock::ArtistDetails.into()); + + ArtistDetailsHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::ArtistDetails, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchAlbums.into()); + } + + #[test] + fn test_search_artist_history_key() { + let mut app = App::test_default(); + app + .data + .lidarr_data + .artist_history + .set_items(vec![LidarrHistoryItem::default()]); + app.push_navigation_stack(ActiveLidarrBlock::ArtistHistory.into()); + + ArtistDetailsHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::ArtistHistory, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchArtistHistory.into()); + } + + #[test] + fn test_filter_artist_history_key() { + let mut app = App::test_default(); + app + .data + .lidarr_data + .artist_history + .set_items(vec![LidarrHistoryItem::default()]); + app.push_navigation_stack(ActiveLidarrBlock::ArtistHistory.into()); + + ArtistDetailsHandler::new( + DEFAULT_KEYBINDINGS.filter.key, + &mut app, + ActiveLidarrBlock::ArtistHistory, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::FilterArtistHistory.into()); + } } #[test] diff --git a/src/handlers/lidarr_handlers/library/edit_artist_handler_tests.rs b/src/handlers/lidarr_handlers/library/edit_artist_handler_tests.rs index fee625cd..2075364d 100644 --- a/src/handlers/lidarr_handlers/library/edit_artist_handler_tests.rs +++ b/src/handlers/lidarr_handlers/library/edit_artist_handler_tests.rs @@ -782,29 +782,41 @@ mod tests { edit_artist .quality_profile_list .set_items(vec!["Lossless".to_owned(), "HD - 1080p".to_owned()]); + edit_artist.quality_profile_list.state.select(Some(1)); edit_artist .metadata_profile_list .set_items(vec!["Standard".to_owned(), "Full".to_owned()]); + edit_artist.metadata_profile_list.state.select(Some(1)); edit_artist .monitor_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + edit_artist.monitor_list.state.select(Some(1)); app.data.lidarr_data.edit_artist_modal = Some(edit_artist); - app.data.lidarr_data.artists.set_items(vec![Artist { - monitored: false, - ..Artist::default() - }]); + app.data.lidarr_data.artists.set_items(vec![ + Artist { + id: 999, + monitored: false, + ..Artist::default() + }, + Artist { + id: 2, + monitored: false, + ..Artist::default() + }, + ]); + app.data.lidarr_data.artists.select_index(Some(1)); app.data.lidarr_data.quality_profile_map = BiMap::from_iter([ (1111, "Lossless".to_owned()), (2222, "HD - 1080p".to_owned()), ]); app.data.lidarr_data.metadata_profile_map = - BiMap::from_iter([(1111, "Standard".to_owned()), (2222, "Full".to_owned())]); + BiMap::from_iter([(3333, "Standard".to_owned()), (4444, "Full".to_owned())]); let expected_edit_artist_params = EditArtistParams { - artist_id: 0, + artist_id: 2, monitored: Some(false), - monitor_new_items: Some(NewItemMonitorType::All), - quality_profile_id: Some(1111), - metadata_profile_id: Some(1111), + monitor_new_items: Some(NewItemMonitorType::None), + quality_profile_id: Some(2222), + metadata_profile_id: Some(4444), root_folder_path: Some("/nfs/Test Path".to_owned()), tag_input_string: Some("usenet, testing".to_owned()), ..EditArtistParams::default() @@ -1236,29 +1248,41 @@ mod tests { edit_artist .quality_profile_list .set_items(vec!["Lossless".to_owned(), "HD - 1080p".to_owned()]); + edit_artist.quality_profile_list.state.select(Some(1)); edit_artist .metadata_profile_list .set_items(vec!["Standard".to_owned(), "Full".to_owned()]); + edit_artist.metadata_profile_list.state.select(Some(1)); edit_artist .monitor_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + edit_artist.monitor_list.state.select(Some(1)); app.data.lidarr_data.edit_artist_modal = Some(edit_artist); - app.data.lidarr_data.artists.set_items(vec![Artist { - monitored: false, - ..Artist::default() - }]); + app.data.lidarr_data.artists.set_items(vec![ + Artist { + id: 999, + monitored: false, + ..Artist::default() + }, + Artist { + id: 2, + monitored: false, + ..Artist::default() + }, + ]); + app.data.lidarr_data.artists.select_index(Some(1)); app.data.lidarr_data.quality_profile_map = BiMap::from_iter([ (1111, "Lossless".to_owned()), (2222, "HD - 1080p".to_owned()), ]); app.data.lidarr_data.metadata_profile_map = - BiMap::from_iter([(1111, "Standard".to_owned()), (2222, "Full".to_owned())]); + BiMap::from_iter([(3333, "Standard".to_owned()), (4444, "Full".to_owned())]); let expected_edit_artist_params = EditArtistParams { - artist_id: 0, + artist_id: 2, monitored: Some(false), - monitor_new_items: Some(NewItemMonitorType::All), - quality_profile_id: Some(1111), - metadata_profile_id: Some(1111), + monitor_new_items: Some(NewItemMonitorType::None), + quality_profile_id: Some(2222), + metadata_profile_id: Some(4444), root_folder_path: Some("/nfs/Test Path".to_owned()), tag_input_string: Some("usenet, testing".to_owned()), ..EditArtistParams::default() @@ -1332,29 +1356,41 @@ mod tests { edit_artist .quality_profile_list .set_items(vec!["Lossless".to_owned(), "HD - 1080p".to_owned()]); + edit_artist.quality_profile_list.state.select(Some(1)); edit_artist .metadata_profile_list .set_items(vec!["Standard".to_owned(), "Full".to_owned()]); + edit_artist.metadata_profile_list.state.select(Some(1)); edit_artist .monitor_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + edit_artist.monitor_list.state.select(Some(1)); app.data.lidarr_data.edit_artist_modal = Some(edit_artist); - app.data.lidarr_data.artists.set_items(vec![Artist { - monitored: false, - ..Artist::default() - }]); + app.data.lidarr_data.artists.set_items(vec![ + Artist { + id: 999, + monitored: false, + ..Artist::default() + }, + Artist { + id: 2, + monitored: false, + ..Artist::default() + }, + ]); + app.data.lidarr_data.artists.select_index(Some(1)); app.data.lidarr_data.quality_profile_map = BiMap::from_iter([ (1111, "Lossless".to_owned()), (2222, "HD - 1080p".to_owned()), ]); app.data.lidarr_data.metadata_profile_map = - BiMap::from_iter([(1111, "Standard".to_owned()), (2222, "Full".to_owned())]); + BiMap::from_iter([(3333, "Standard".to_owned()), (4444, "Full".to_owned())]); let expected_edit_artist_params = EditArtistParams { - artist_id: 0, + artist_id: 2, monitored: Some(false), - monitor_new_items: Some(NewItemMonitorType::All), - quality_profile_id: Some(1111), - metadata_profile_id: Some(1111), + monitor_new_items: Some(NewItemMonitorType::None), + quality_profile_id: Some(2222), + metadata_profile_id: Some(4444), root_folder_path: Some("/nfs/Test Path".to_owned()), tag_input_string: Some("usenet, testing".to_owned()), ..EditArtistParams::default() diff --git a/src/handlers/lidarr_handlers/library/library_handler_tests.rs b/src/handlers/lidarr_handlers/library/library_handler_tests.rs index 85ca1d34..0e4f93f6 100644 --- a/src/handlers/lidarr_handlers/library/library_handler_tests.rs +++ b/src/handlers/lidarr_handlers/library/library_handler_tests.rs @@ -244,11 +244,8 @@ mod tests { #[test] fn test_toggle_monitoring_key() { let mut app = App::test_default(); - app - .data - .lidarr_data - .artists - .set_items(vec![Artist::default()]); + app.data.lidarr_data.artists.set_items(artists_vec()); + app.data.lidarr_data.artists.select_index(Some(1)); app.push_navigation_stack(ActiveLidarrBlock::Artists.into()); app.is_routing = false; @@ -265,7 +262,7 @@ mod tests { assert!(app.is_routing); assert_some_eq_x!( &app.data.lidarr_data.prompt_confirm_action, - &LidarrEvent::ToggleArtistMonitoring(0) + &LidarrEvent::ToggleArtistMonitoring(2) ); } @@ -770,4 +767,38 @@ mod tests { assert_eq!(app.get_current_route(), ActiveLidarrBlock::Artists.into()); assert!(app.should_refresh); } + + #[test] + fn test_search_artists_key() { + let mut app = App::test_default(); + app.data.lidarr_data.artists.set_items(artists_vec()); + app.push_navigation_stack(ActiveLidarrBlock::Artists.into()); + + LibraryHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::Artists, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchArtists.into()); + } + + #[test] + fn test_filter_artists_key() { + let mut app = App::test_default(); + app.data.lidarr_data.artists.set_items(artists_vec()); + app.push_navigation_stack(ActiveLidarrBlock::Artists.into()); + + LibraryHandler::new( + DEFAULT_KEYBINDINGS.filter.key, + &mut app, + ActiveLidarrBlock::Artists, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::FilterArtists.into()); + } } diff --git a/src/handlers/lidarr_handlers/library/track_details_handler_tests.rs b/src/handlers/lidarr_handlers/library/track_details_handler_tests.rs index 9529db72..55101bdf 100644 --- a/src/handlers/lidarr_handlers/library/track_details_handler_tests.rs +++ b/src/handlers/lidarr_handlers/library/track_details_handler_tests.rs @@ -244,6 +244,38 @@ mod tests { assert_eq!(app.get_current_route(), active_lidarr_block.into()); assert!(!app.is_routing); } + + #[test] + fn test_search_track_history_key() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveLidarrBlock::TrackHistory.into()); + + TrackDetailsHandler::new( + DEFAULT_KEYBINDINGS.search.key, + &mut app, + ActiveLidarrBlock::TrackHistory, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::SearchTrackHistory.into()); + } + + #[test] + fn test_filter_track_history_key() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveLidarrBlock::TrackHistory.into()); + + TrackDetailsHandler::new( + DEFAULT_KEYBINDINGS.filter.key, + &mut app, + ActiveLidarrBlock::TrackHistory, + None, + ) + .handle(); + + assert_navigation_pushed!(app, ActiveLidarrBlock::FilterTrackHistory.into()); + } } #[test] diff --git a/src/handlers/lidarr_handlers/root_folders/add_root_folder_handler_tests.rs b/src/handlers/lidarr_handlers/root_folders/add_root_folder_handler_tests.rs index 004706d1..71376f98 100644 --- a/src/handlers/lidarr_handlers/root_folders/add_root_folder_handler_tests.rs +++ b/src/handlers/lidarr_handlers/root_folders/add_root_folder_handler_tests.rs @@ -1052,27 +1052,31 @@ mod tests { add_root_folder .quality_profile_list .set_items(vec!["Lossless".to_owned(), "FLAC".to_owned()]); + add_root_folder.quality_profile_list.state.select(Some(1)); add_root_folder .metadata_profile_list .set_items(vec!["Standard".to_owned(), "Full".to_owned()]); + add_root_folder.metadata_profile_list.state.select(Some(1)); add_root_folder .monitor_list .set_items(Vec::from_iter(MonitorType::iter())); + add_root_folder.monitor_list.state.select(Some(1)); add_root_folder .monitor_new_items_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + add_root_folder.monitor_new_items_list.state.select(Some(1)); app.data.lidarr_data.add_root_folder_modal = Some(add_root_folder); app.data.lidarr_data.quality_profile_map = BiMap::from_iter([(1111, "Lossless".to_owned()), (2222, "FLAC".to_owned())]); app.data.lidarr_data.metadata_profile_map = - BiMap::from_iter([(1111, "Standard".to_owned()), (2222, "Full".to_owned())]); + BiMap::from_iter([(3333, "Standard".to_owned()), (4444, "Full".to_owned())]); let expected_add_root_folder_body = AddLidarrRootFolderBody { name: "Test Name".to_owned(), path: "/nfs/Test Path".to_owned(), - default_quality_profile_id: 1111, - default_metadata_profile_id: 1111, - default_monitor_option: MonitorType::All, - default_new_item_monitor_option: NewItemMonitorType::All, + default_quality_profile_id: 2222, + default_metadata_profile_id: 4444, + default_monitor_option: MonitorType::Future, + default_new_item_monitor_option: NewItemMonitorType::None, default_tags: Vec::new(), tag_input_string: Some("usenet, testing".to_owned()), }; @@ -1525,27 +1529,31 @@ mod tests { add_root_folder .quality_profile_list .set_items(vec!["Lossless".to_owned(), "FLAC".to_owned()]); + add_root_folder.quality_profile_list.state.select(Some(1)); add_root_folder .metadata_profile_list .set_items(vec!["Standard".to_owned(), "Full".to_owned()]); + add_root_folder.metadata_profile_list.state.select(Some(1)); add_root_folder .monitor_list .set_items(Vec::from_iter(MonitorType::iter())); + add_root_folder.monitor_list.state.select(Some(1)); add_root_folder .monitor_new_items_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + add_root_folder.monitor_new_items_list.state.select(Some(1)); app.data.lidarr_data.add_root_folder_modal = Some(add_root_folder); app.data.lidarr_data.quality_profile_map = BiMap::from_iter([(1111, "Lossless".to_owned()), (2222, "FLAC".to_owned())]); app.data.lidarr_data.metadata_profile_map = - BiMap::from_iter([(1111, "Standard".to_owned()), (2222, "Full".to_owned())]); + BiMap::from_iter([(3333, "Standard".to_owned()), (4444, "Full".to_owned())]); let expected_add_root_folder_body = AddLidarrRootFolderBody { name: "Test Name".to_owned(), path: "/nfs/Test Path".to_owned(), - default_quality_profile_id: 1111, - default_metadata_profile_id: 1111, - default_monitor_option: MonitorType::All, - default_new_item_monitor_option: NewItemMonitorType::All, + default_quality_profile_id: 2222, + default_metadata_profile_id: 4444, + default_monitor_option: MonitorType::Future, + default_new_item_monitor_option: NewItemMonitorType::None, default_tags: Vec::new(), tag_input_string: Some("usenet, testing".to_owned()), }; @@ -1619,27 +1627,31 @@ mod tests { add_root_folder .quality_profile_list .set_items(vec!["Lossless".to_owned(), "FLAC".to_owned()]); + add_root_folder.quality_profile_list.state.select(Some(1)); add_root_folder .metadata_profile_list .set_items(vec!["Standard".to_owned(), "Full".to_owned()]); + add_root_folder.metadata_profile_list.state.select(Some(1)); add_root_folder .monitor_list .set_items(Vec::from_iter(MonitorType::iter())); + add_root_folder.monitor_list.state.select(Some(1)); add_root_folder .monitor_new_items_list .set_items(Vec::from_iter(NewItemMonitorType::iter())); + add_root_folder.monitor_new_items_list.state.select(Some(1)); app.data.lidarr_data.add_root_folder_modal = Some(add_root_folder); app.data.lidarr_data.quality_profile_map = BiMap::from_iter([(1111, "Lossless".to_owned()), (2222, "FLAC".to_owned())]); app.data.lidarr_data.metadata_profile_map = - BiMap::from_iter([(1111, "Standard".to_owned()), (2222, "Full".to_owned())]); + BiMap::from_iter([(3333, "Standard".to_owned()), (4444, "Full".to_owned())]); let expected_add_root_folder_body = AddLidarrRootFolderBody { name: "Test Name".to_owned(), path: "/nfs/Test Path".to_owned(), - default_quality_profile_id: 1111, - default_metadata_profile_id: 1111, - default_monitor_option: MonitorType::All, - default_new_item_monitor_option: NewItemMonitorType::All, + default_quality_profile_id: 2222, + default_metadata_profile_id: 4444, + default_monitor_option: MonitorType::Future, + default_new_item_monitor_option: NewItemMonitorType::None, default_tags: Vec::new(), tag_input_string: Some("usenet, testing".to_owned()), };