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

@@ -142,11 +142,15 @@ mod tests {
#[test]
fn test_collection_details_submit_movie_already_in_library() {
let mut app = App::test_default();
app
.data
.radarr_data
.collection_movies
.set_items(vec![collection_movie()]);
app.data.radarr_data.collection_movies.set_items(vec![
CollectionMovie {
tmdb_id: 5678,
overview: "Some other overview".to_owned(),
..CollectionMovie::default()
},
collection_movie(),
]);
app.data.radarr_data.collection_movies.select_index(Some(1));
app.data.radarr_data.movies.set_items(vec![Movie {
tmdb_id: collection_movie().tmdb_id,
..Movie::default()
@@ -381,6 +381,48 @@ mod tests {
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]
fn test_update_all_collections_prompt_confirm_confirm() {
let mut app = App::test_default();
@@ -532,19 +532,34 @@ mod tests {
edit_collection_modal
.minimum_availability_list
.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.collections.set_items(vec![Collection {
monitored: false,
search_on_add: false,
..collection()
}]);
app.data.radarr_data.collections.set_items(vec![
Collection {
id: 999,
..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 =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_collection_params = EditCollectionParams {
collection_id: 123,
monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced),
quality_profile_id: Some(1111),
minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()),
search_on_add: Some(false),
};
@@ -945,19 +960,34 @@ mod tests {
edit_collection_modal
.minimum_availability_list
.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.collections.set_items(vec![Collection {
monitored: false,
search_on_add: false,
..collection()
}]);
app.data.radarr_data.collections.set_items(vec![
Collection {
id: 999,
..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 =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_collection_params = EditCollectionParams {
collection_id: 123,
monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced),
quality_profile_id: Some(1111),
minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()),
search_on_add: Some(false),
};
@@ -1034,19 +1064,34 @@ mod tests {
edit_collection_modal
.minimum_availability_list
.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.collections.set_items(vec![Collection {
monitored: false,
search_on_add: false,
..collection()
}]);
app.data.radarr_data.collections.set_items(vec![
Collection {
id: 999,
..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 =
BiMap::from_iter([(1111, "Any".to_owned()), (2222, "HD - 1080p".to_owned())]);
let expected_edit_collection_params = EditCollectionParams {
collection_id: 123,
monitored: Some(false),
minimum_availability: Some(MinimumAvailability::Announced),
quality_profile_id: Some(1111),
minimum_availability: Some(MinimumAvailability::InCinemas),
quality_profile_id: Some(2222),
root_folder_path: Some("/nfs/Test Path".to_owned()),
search_on_add: Some(false),
};