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

@@ -143,6 +143,11 @@ mod tests {
} else {
"usenet".to_owned()
};
let other_protocol = if torrent_protocol {
"usenet".to_owned()
} else {
"torrent".to_owned()
};
let mut expected_edit_indexer_modal = EditIndexerModal {
name: "Test".into(),
enable_rss: Some(true),
@@ -186,7 +191,14 @@ mod tests {
fields: Some(fields),
..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;
IndexersHandler::new(SUBMIT_KEY, &mut app, ActiveRadarrBlock::Indexers, None).handle();
@@ -233,7 +245,12 @@ mod tests {
#[test]
fn test_delete_indexer_prompt_confirm_submit() {
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.push_navigation_stack(ActiveRadarrBlock::Indexers.into());
app.push_navigation_stack(ActiveRadarrBlock::DeleteIndexerPrompt.into());
@@ -249,7 +266,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::DeleteIndexer(1)
&RadarrEvent::DeleteIndexer(2)
);
assert_navigation_popped!(app, ActiveRadarrBlock::Indexers.into());
}
@@ -523,7 +540,12 @@ mod tests {
#[test]
fn test_delete_indexer_prompt_confirm() {
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::DeleteIndexerPrompt.into());
@@ -538,7 +560,7 @@ mod tests {
assert!(app.data.radarr_data.prompt_confirm);
assert_some_eq_x!(
&app.data.radarr_data.prompt_confirm_action,
&RadarrEvent::DeleteIndexer(1)
&RadarrEvent::DeleteIndexer(2)
);
assert_navigation_popped!(app, ActiveRadarrBlock::Indexers.into());
}