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.
This commit is contained in:
Dark-Alex-17 committed 2026-09-09 15:51:10 -06:00
1 parent 18a50ab97c
commit f141e53f30
8 files changed
+419 -80

No files matched your search

@@ -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,
},
};