Files
managarr/src/models/servarr_data/sonarr/sonarr_data_tests.rs

311 lines
12 KiB
Rust

#[cfg(test)]
mod tests {
mod sonarr_data_tests {
use chrono::{DateTime, Utc};
use pretty_assertions::{assert_eq, assert_str_eq};
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, SERIES_DETAILS_CONTEXT_CLUES,
},
},
models::{
servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SonarrData},
BlockSelectionState, Route,
},
};
#[test]
fn test_from_active_sonarr_block_to_route() {
assert_eq!(
Route::from(ActiveSonarrBlock::SeriesSortPrompt),
Route::Sonarr(ActiveSonarrBlock::SeriesSortPrompt, None)
);
}
#[test]
fn test_from_tuple_to_route_with_context() {
assert_eq!(
Route::from((
ActiveSonarrBlock::SeriesSortPrompt,
Some(ActiveSonarrBlock::Series)
)),
Route::Sonarr(
ActiveSonarrBlock::SeriesSortPrompt,
Some(ActiveSonarrBlock::Series),
)
);
}
#[test]
fn test_reset_delete_series_preferences() {
let mut sonarr_data = SonarrData {
add_list_exclusion: true,
delete_series_files: true,
..SonarrData::default()
};
sonarr_data.reset_delete_series_preferences();
assert!(!sonarr_data.delete_series_files);
assert!(!sonarr_data.add_list_exclusion);
}
#[test]
fn test_sonarr_data_defaults() {
let sonarr_data = SonarrData::default();
assert!(!sonarr_data.add_list_exclusion);
assert!(sonarr_data.add_searched_series.is_none());
assert!(sonarr_data.add_series_search.is_none());
assert!(sonarr_data.add_series_modal.is_none());
assert!(sonarr_data.blocklist.is_empty());
assert!(!sonarr_data.delete_series_files);
assert!(sonarr_data.downloads.is_empty());
assert!(sonarr_data.disk_space_vec.is_empty());
assert!(sonarr_data.edit_indexer_modal.is_none());
assert!(sonarr_data.edit_root_folder.is_none());
assert!(sonarr_data.edit_series_modal.is_none());
assert!(sonarr_data.history.is_empty());
assert!(sonarr_data.indexers.is_empty());
assert!(sonarr_data.indexer_settings.is_none());
assert!(sonarr_data.indexer_test_error.is_none());
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.log_details.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());
assert!(sonarr_data.tags_map.is_empty());
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))
);
assert_eq!(sonarr_data.series_info_tabs.tabs.len(), 2);
assert_str_eq!(sonarr_data.series_info_tabs.tabs[0].title, "Seasons");
assert_eq!(
sonarr_data.series_info_tabs.tabs[0].route,
ActiveSonarrBlock::SeriesDetails.into()
);
assert!(sonarr_data.series_info_tabs.tabs[0].help.is_empty());
assert_eq!(
sonarr_data.series_info_tabs.tabs[0].contextual_help,
Some(build_context_clue_string(&SERIES_DETAILS_CONTEXT_CLUES))
);
assert_str_eq!(sonarr_data.series_info_tabs.tabs[1].title, "History");
assert_eq!(
sonarr_data.series_info_tabs.tabs[1].route,
ActiveSonarrBlock::SeriesHistory.into()
);
assert!(sonarr_data.series_info_tabs.tabs[1].help.is_empty());
assert_eq!(
sonarr_data.series_info_tabs.tabs[1].contextual_help,
Some(build_context_clue_string(&HISTORY_CONTEXT_CLUES))
);
}
}
mod active_sonarr_block_tests {
use crate::models::servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, DELETE_SERIES_BLOCKS, DELETE_SERIES_SELECTION_BLOCKS, DOWNLOADS_BLOCKS,
EDIT_SERIES_BLOCKS, EDIT_SERIES_SELECTION_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_edit_movie_blocks_contents() {
assert_eq!(EDIT_SERIES_BLOCKS.len(), 9);
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesPrompt));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesConfirmPrompt));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesPathInput));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesSelectSeriesType));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesSelectQualityProfile));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesSelectLanguageProfile));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesTagsInput));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesToggleMonitored));
assert!(EDIT_SERIES_BLOCKS.contains(&ActiveSonarrBlock::EditSeriesToggleSeasonFolder));
}
#[test]
fn test_edit_series_selection_blocks_ordering() {
let mut edit_series_block_iter = EDIT_SERIES_SELECTION_BLOCKS.iter();
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesToggleMonitored]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesToggleSeasonFolder]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesSelectQualityProfile]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesSelectLanguageProfile]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesSelectSeriesType]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesPathInput]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesTagsInput]
);
assert_eq!(
edit_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::EditSeriesConfirmPrompt]
);
assert_eq!(edit_series_block_iter.next(), None);
}
#[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));
}
#[test]
fn test_delete_series_blocks_contents() {
assert_eq!(DELETE_SERIES_BLOCKS.len(), 4);
assert!(DELETE_SERIES_BLOCKS.contains(&ActiveSonarrBlock::DeleteSeriesPrompt));
assert!(DELETE_SERIES_BLOCKS.contains(&ActiveSonarrBlock::DeleteSeriesConfirmPrompt));
assert!(DELETE_SERIES_BLOCKS.contains(&ActiveSonarrBlock::DeleteSeriesToggleDeleteFile));
assert!(DELETE_SERIES_BLOCKS.contains(&ActiveSonarrBlock::DeleteSeriesToggleAddListExclusion));
}
#[test]
fn test_delete_series_selection_blocks_ordering() {
let mut delete_series_block_iter = DELETE_SERIES_SELECTION_BLOCKS.iter();
assert_eq!(
delete_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::DeleteSeriesToggleDeleteFile]
);
assert_eq!(
delete_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::DeleteSeriesToggleAddListExclusion]
);
assert_eq!(
delete_series_block_iter.next().unwrap(),
&[ActiveSonarrBlock::DeleteSeriesConfirmPrompt]
);
assert_eq!(delete_series_block_iter.next(), None);
}
}
}