From 5fa521ba7f825d36dabb3c91bcdc1c3da1fb600e Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Thu, 10 Sep 2026 00:57:55 -0600 Subject: [PATCH] test: cover indexer settings drawn over the indexers table IndexersUi dispatches to IndexerSettingsUi, but no test rendered that route through the parent, so deleting the dispatch arm in radarr, sonarr and lidarr left the whole suite green. --- .../lidarr_ui/indexers/indexers_ui_tests.rs | 15 +++++++ ...enders_indexer_settings_over_indexers.snap | 40 ++++++++++++++++++ .../radarr_ui/indexers/indexers_ui_tests.rs | 17 ++++++++ ...enders_indexer_settings_over_indexers.snap | 42 +++++++++++++++++++ .../sonarr_ui/indexers/indexers_ui_tests.rs | 15 +++++++ ...enders_indexer_settings_over_indexers.snap | 40 ++++++++++++++++++ 6 files changed, 169 insertions(+) create mode 100644 src/ui/lidarr_ui/indexers/snapshots/managarr__ui__lidarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap create mode 100644 src/ui/radarr_ui/indexers/snapshots/managarr__ui__radarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap create mode 100644 src/ui/sonarr_ui/indexers/snapshots/managarr__ui__sonarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap diff --git a/src/ui/lidarr_ui/indexers/indexers_ui_tests.rs b/src/ui/lidarr_ui/indexers/indexers_ui_tests.rs index 80191880..f064db82 100644 --- a/src/ui/lidarr_ui/indexers/indexers_ui_tests.rs +++ b/src/ui/lidarr_ui/indexers/indexers_ui_tests.rs @@ -32,6 +32,7 @@ mod tests { use crate::models::BlockSelectionState; use crate::models::servarr_data::lidarr::lidarr_data::{ EDIT_INDEXER_NZB_SELECTION_BLOCKS, EDIT_INDEXER_TORRENT_SELECTION_BLOCKS, + INDEXER_SETTINGS_SELECTION_BLOCKS, }; use crate::network::lidarr_network::lidarr_network_test_utils::test_utils::indexer; use crate::ui::ui_test_utils::test_utils::TerminalSize; @@ -152,5 +153,19 @@ mod tests { insta::assert_snapshot!(output); } + + #[test] + fn test_indexers_ui_renders_indexer_settings_over_indexers() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveLidarrBlock::AllIndexerSettingsPrompt.into()); + app.data.lidarr_data.selected_block = + BlockSelectionState::new(INDEXER_SETTINGS_SELECTION_BLOCKS); + + let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| { + IndexersUi::draw(f, app, f.area()); + }); + + insta::assert_snapshot!(output); + } } } diff --git a/src/ui/lidarr_ui/indexers/snapshots/managarr__ui__lidarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap b/src/ui/lidarr_ui/indexers/snapshots/managarr__ui__lidarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap new file mode 100644 index 00000000..d6df46e4 --- /dev/null +++ b/src/ui/lidarr_ui/indexers/snapshots/managarr__ui__lidarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap @@ -0,0 +1,40 @@ +--- +source: src/ui/lidarr_ui/indexers/indexers_ui_tests.rs +expression: output +--- +───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + Indexer RSS Automatic Search Interactive Search Priority Tags +=> Test Indexer Enabled Enabled Enabled 25 alex + + + + + + + + + + + + ╭─────────────────── Configure All Indexer Settings ───────────────────╮ + │ │ + │ │ + │ │ + │ ╭────────────────────────────────╮ │ + │ Minimum Age (minutes) ▴▾: │11 │ │ + │ ╰────────────────────────────────╯ │ + │ ╭────────────────────────────────╮ │ + │ Retention (days) ▴▾: │29 │ │ + │ ╰────────────────────────────────╯ │ + │ ╭────────────────────────────────╮ │ + │ Maximum Size (MB) ▴▾: │12345 │ │ + │ ╰────────────────────────────────╯ │ + │ ╭────────────────────────────────╮ │ + │ RSS Sync Interval (minutes) ▴▾: │60 │ │ + │ ╰────────────────────────────────╯ │ + │ │ + │ │ + │ ╭────────────────╮╭────────────────╮ │ + │ │ Save ││ Cancel │ │ + │ ╰────────────────╯╰────────────────╯ │ + ╰────────────────────────────────────────────────────────────────────────╯ diff --git a/src/ui/radarr_ui/indexers/indexers_ui_tests.rs b/src/ui/radarr_ui/indexers/indexers_ui_tests.rs index 19193d3b..553d4095 100644 --- a/src/ui/radarr_ui/indexers/indexers_ui_tests.rs +++ b/src/ui/radarr_ui/indexers/indexers_ui_tests.rs @@ -29,6 +29,9 @@ mod tests { } mod snapshot_tests { + use crate::models::BlockSelectionState; + use crate::models::servarr_data::radarr::radarr_data::INDEXER_SETTINGS_SELECTION_BLOCKS; + use super::*; #[test] @@ -120,5 +123,19 @@ mod tests { insta::assert_snapshot!(output); } + + #[test] + fn test_indexers_ui_renders_indexer_settings_over_indexers() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveRadarrBlock::AllIndexerSettingsPrompt.into()); + app.data.radarr_data.selected_block = + BlockSelectionState::new(INDEXER_SETTINGS_SELECTION_BLOCKS); + + let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| { + IndexersUi::draw(f, app, f.area()); + }); + + insta::assert_snapshot!(output); + } } } diff --git a/src/ui/radarr_ui/indexers/snapshots/managarr__ui__radarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap b/src/ui/radarr_ui/indexers/snapshots/managarr__ui__radarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap new file mode 100644 index 00000000..796f4fd5 --- /dev/null +++ b/src/ui/radarr_ui/indexers/snapshots/managarr__ui__radarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap @@ -0,0 +1,42 @@ +--- +source: src/ui/radarr_ui/indexers/indexers_ui_tests.rs +expression: output +--- +───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + Indexer ▼ RSS Automatic Search Interactive Search Priority Tags +=> Test Indexer Enabled Enabled Enabled 25 alex + + + + + + + + + + + ╭─────────────────────────────────────── Configure All Indexer Settings ────────────────────────────────────────╮ + │ │ + │ ╭─────────────────────────╮ ╭─────────────────────────╮ │ + │ Minimum Age (minutes) ▴▾: │12 │ Availability Delay (days) │0 │ │ + │ ╰─────────────────────────╯ ╰─────────────────────────╯ │ + │ ╭─────────────────────────╮ ╭─────────────────────────╮ │ + │ Retention (days) ▴▾: │30 │ RSS Sync Interval (minutes│60 │ │ + │ ╰─────────────────────────╯ ╰─────────────────────────╯ │ + │ ╭─────────────────────────╮ ╭─────────────────────────╮ │ + │ Maximum Size (MB) ▴▾: │1234 │ Whitelisted Subtitle Tags:│eng │ │ + │ ╰─────────────────────────╯ ╰─────────────────────────╯ │ + │ ╭───╮ ╭───╮ │ + │ Prefer Indexer Flags: │ ✔ │ Allow Hardcoded Subs: │ ✔ │ │ + │ ╰───╯ ╰───╯ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ │ + │ ╭───────────────────────────╮╭──────────────────────────╮ │ + │ │ Save ││ Cancel │ │ + │ ╰───────────────────────────╯╰──────────────────────────╯ │ + ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/src/ui/sonarr_ui/indexers/indexers_ui_tests.rs b/src/ui/sonarr_ui/indexers/indexers_ui_tests.rs index 0db0575e..0cbf8bfc 100644 --- a/src/ui/sonarr_ui/indexers/indexers_ui_tests.rs +++ b/src/ui/sonarr_ui/indexers/indexers_ui_tests.rs @@ -32,6 +32,7 @@ mod tests { use crate::models::BlockSelectionState; use crate::models::servarr_data::sonarr::sonarr_data::{ EDIT_INDEXER_NZB_SELECTION_BLOCKS, EDIT_INDEXER_TORRENT_SELECTION_BLOCKS, + INDEXER_SETTINGS_SELECTION_BLOCKS, }; use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::indexer; use crate::ui::ui_test_utils::test_utils::TerminalSize; @@ -152,5 +153,19 @@ mod tests { insta::assert_snapshot!(output); } + + #[test] + fn test_indexers_ui_renders_indexer_settings_over_indexers() { + let mut app = App::test_default_fully_populated(); + app.push_navigation_stack(ActiveSonarrBlock::AllIndexerSettingsPrompt.into()); + app.data.sonarr_data.selected_block = + BlockSelectionState::new(INDEXER_SETTINGS_SELECTION_BLOCKS); + + let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| { + IndexersUi::draw(f, app, f.area()); + }); + + insta::assert_snapshot!(output); + } } } diff --git a/src/ui/sonarr_ui/indexers/snapshots/managarr__ui__sonarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap b/src/ui/sonarr_ui/indexers/snapshots/managarr__ui__sonarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap new file mode 100644 index 00000000..de0fee50 --- /dev/null +++ b/src/ui/sonarr_ui/indexers/snapshots/managarr__ui__sonarr_ui__indexers__indexers_ui_tests__tests__snapshot_tests__indexers_ui_renders_indexer_settings_over_indexers.snap @@ -0,0 +1,40 @@ +--- +source: src/ui/sonarr_ui/indexers/indexers_ui_tests.rs +expression: output +--- +───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + Indexer RSS Automatic Search Interactive Search Priority Tags +=> Test Indexer Enabled Enabled Enabled 25 alex + + + + + + + + + + + + ╭─────────────────── Configure All Indexer Settings ───────────────────╮ + │ │ + │ │ + │ │ + │ ╭────────────────────────────────╮ │ + │ Minimum Age (minutes) ▴▾: │13 │ │ + │ ╰────────────────────────────────╯ │ + │ ╭────────────────────────────────╮ │ + │ Retention (days) ▴▾: │21 │ │ + │ ╰────────────────────────────────╯ │ + │ ╭────────────────────────────────╮ │ + │ Maximum Size (MB) ▴▾: │12345 │ │ + │ ╰────────────────────────────────╯ │ + │ ╭────────────────────────────────╮ │ + │ RSS Sync Interval (minutes) ▴▾: │60 │ │ + │ ╰────────────────────────────────╯ │ + │ │ + │ │ + │ ╭────────────────╮╭────────────────╮ │ + │ │ Save ││ Cancel │ │ + │ ╰────────────────╯╰────────────────╯ │ + ╰────────────────────────────────────────────────────────────────────────╯