feat(app): Dispatch support for all relevant Sonarr blocks

This commit is contained in:
2024-11-27 17:06:20 -07:00
parent 73a4129000
commit f139db07d9
86 changed files with 4075 additions and 3005 deletions
@@ -2,10 +2,20 @@
mod tests {
mod sonarr_data_tests {
use chrono::{DateTime, Utc};
use pretty_assertions::{assert_eq, assert_str_eq};
use crate::models::{
servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SonarrData},
Route,
use crate::{
app::{
context_clues::{
build_context_clue_string, BLOCKLIST_CONTEXT_CLUES, DOWNLOADS_CONTEXT_CLUES,
INDEXERS_CONTEXT_CLUES, ROOT_FOLDERS_CONTEXT_CLUES, SYSTEM_CONTEXT_CLUES,
},
sonarr::sonarr_context_clues::{HISTORY_CONTEXT_CLUES, SERIES_CONTEXT_CLUES},
},
models::{
servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SonarrData},
BlockSelectionState, Route,
},
};
#[test]
@@ -66,11 +76,14 @@ mod tests {
assert!(sonarr_data.indexer_test_all_results.is_none());
assert!(sonarr_data.language_profiles_map.is_empty());
assert!(sonarr_data.logs.is_empty());
assert!(!sonarr_data.prompt_confirm);
assert!(sonarr_data.prompt_confirm_action.is_none());
assert!(sonarr_data.quality_profile_map.is_empty());
assert!(sonarr_data.queued_events.is_empty());
assert!(sonarr_data.root_folders.is_empty());
assert!(sonarr_data.seasons.is_empty());
assert!(sonarr_data.season_details_modal.is_none());
assert_eq!(sonarr_data.selected_block, BlockSelectionState::default());
assert!(sonarr_data.series.is_empty());
assert!(sonarr_data.series_history.is_none());
assert_eq!(sonarr_data.start_time, <DateTime<Utc>>::default());
@@ -78,6 +91,111 @@ mod tests {
assert!(sonarr_data.tasks.is_empty());
assert!(sonarr_data.updates.is_empty());
assert!(sonarr_data.version.is_empty());
assert_eq!(sonarr_data.main_tabs.tabs.len(), 7);
assert_str_eq!(sonarr_data.main_tabs.tabs[0].title, "Library");
assert_eq!(
sonarr_data.main_tabs.tabs[0].route,
ActiveSonarrBlock::Series.into()
);
assert!(sonarr_data.main_tabs.tabs[0].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[0].contextual_help,
Some(build_context_clue_string(&SERIES_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.main_tabs.tabs[1].title, "Downloads");
assert_eq!(
sonarr_data.main_tabs.tabs[1].route,
ActiveSonarrBlock::Downloads.into()
);
assert!(sonarr_data.main_tabs.tabs[1].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[1].contextual_help,
Some(build_context_clue_string(&DOWNLOADS_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.main_tabs.tabs[2].title, "Blocklist");
assert_eq!(
sonarr_data.main_tabs.tabs[2].route,
ActiveSonarrBlock::Blocklist.into()
);
assert!(sonarr_data.main_tabs.tabs[2].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[2].contextual_help,
Some(build_context_clue_string(&BLOCKLIST_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.main_tabs.tabs[3].title, "History");
assert_eq!(
sonarr_data.main_tabs.tabs[3].route,
ActiveSonarrBlock::History.into()
);
assert!(sonarr_data.main_tabs.tabs[3].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[3].contextual_help,
Some(build_context_clue_string(&HISTORY_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.main_tabs.tabs[4].title, "Root Folders");
assert_eq!(
sonarr_data.main_tabs.tabs[4].route,
ActiveSonarrBlock::RootFolders.into()
);
assert!(sonarr_data.main_tabs.tabs[4].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[4].contextual_help,
Some(build_context_clue_string(&ROOT_FOLDERS_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.main_tabs.tabs[5].title, "Indexers");
assert_eq!(
sonarr_data.main_tabs.tabs[5].route,
ActiveSonarrBlock::Indexers.into()
);
assert!(sonarr_data.main_tabs.tabs[5].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[5].contextual_help,
Some(build_context_clue_string(&INDEXERS_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.main_tabs.tabs[6].title, "System");
assert_eq!(
sonarr_data.main_tabs.tabs[6].route,
ActiveSonarrBlock::System.into()
);
assert!(sonarr_data.main_tabs.tabs[6].help.is_empty());
assert_eq!(
sonarr_data.main_tabs.tabs[6].contextual_help,
Some(build_context_clue_string(&SYSTEM_CONTEXT_CLUES))
);
}
}
mod active_sonarr_block_tests {
use crate::models::servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, DOWNLOADS_BLOCKS, SERIES_BLOCKS,
};
#[test]
fn test_series_blocks_contents() {
assert_eq!(SERIES_BLOCKS.len(), 7);
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::Series));
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::SeriesSortPrompt));
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::SearchSeries));
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::SearchSeriesError));
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::FilterSeries));
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::FilterSeriesError));
assert!(SERIES_BLOCKS.contains(&ActiveSonarrBlock::UpdateAllSeriesPrompt));
}
#[test]
fn test_downloads_blocks_contents() {
assert_eq!(DOWNLOADS_BLOCKS.len(), 3);
assert!(DOWNLOADS_BLOCKS.contains(&ActiveSonarrBlock::Downloads));
assert!(DOWNLOADS_BLOCKS.contains(&ActiveSonarrBlock::DeleteDownloadPrompt));
assert!(DOWNLOADS_BLOCKS.contains(&ActiveSonarrBlock::UpdateDownloadsPrompt));
}
}
}