feat(models): Added the necessary contextual help and tabs for the Sonarr UI

This commit is contained in:
2024-12-01 12:05:20 -07:00
parent f7c96d81e9
commit 21911f93d1
7 changed files with 545 additions and 17 deletions
+136 -1
View File
@@ -5,7 +5,16 @@ mod tests {
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::models::servarr_data::sonarr::modals::EditSeriesModal;
use crate::app::context_clues::build_context_clue_string;
use crate::app::sonarr::sonarr_context_clues::{
EPISODE_DETAILS_CONTEXT_CLUES, MANUAL_EPISODE_SEARCH_CONTEXTUAL_CONTEXT_CLUES,
MANUAL_EPISODE_SEARCH_CONTEXT_CLUES, MANUAL_SEASON_SEARCH_CONTEXT_CLUES,
SEASON_DETAILS_CONTEXT_CLUES,
};
use crate::models::servarr_data::sonarr::modals::{
EditSeriesModal, EpisodeDetailsModal, SeasonDetailsModal,
};
use crate::models::servarr_data::sonarr::sonarr_data::ActiveSonarrBlock;
use crate::models::servarr_models::{Indexer, IndexerField};
use crate::models::{
servarr_data::sonarr::{modals::AddSeriesModal, sonarr_data::SonarrData},
@@ -221,4 +230,130 @@ mod tests {
assert_eq!(edit_series_modal.monitored, Some(true));
assert_eq!(edit_series_modal.use_season_folders, Some(true));
}
#[test]
fn test_episode_details_modal_default() {
let episode_details_modal = EpisodeDetailsModal::default();
assert!(episode_details_modal.episode_details.is_empty());
assert!(episode_details_modal.file_details.is_empty());
assert!(episode_details_modal.audio_details.is_empty());
assert!(episode_details_modal.video_details.is_empty());
assert!(episode_details_modal.episode_history.is_empty());
assert!(episode_details_modal.episode_releases.is_empty());
assert_eq!(episode_details_modal.episode_details_tabs.tabs.len(), 4);
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[0].title,
"Details"
);
assert_eq!(
episode_details_modal.episode_details_tabs.tabs[0].route,
ActiveSonarrBlock::EpisodeDetails.into()
);
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[0].help,
build_context_clue_string(&EPISODE_DETAILS_CONTEXT_CLUES)
);
assert!(episode_details_modal.episode_details_tabs.tabs[0]
.contextual_help
.is_none());
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[1].title,
"History"
);
assert_eq!(
episode_details_modal.episode_details_tabs.tabs[1].route,
ActiveSonarrBlock::EpisodeHistory.into()
);
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[1].help,
build_context_clue_string(&EPISODE_DETAILS_CONTEXT_CLUES)
);
assert!(episode_details_modal.episode_details_tabs.tabs[1]
.contextual_help
.is_none());
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[2].title,
"File"
);
assert_eq!(
episode_details_modal.episode_details_tabs.tabs[2].route,
ActiveSonarrBlock::EpisodeFile.into()
);
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[2].help,
build_context_clue_string(&EPISODE_DETAILS_CONTEXT_CLUES)
);
assert!(episode_details_modal.episode_details_tabs.tabs[2]
.contextual_help
.is_none());
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[3].title,
"Manual Search"
);
assert_eq!(
episode_details_modal.episode_details_tabs.tabs[3].route,
ActiveSonarrBlock::ManualEpisodeSearch.into()
);
assert_str_eq!(
episode_details_modal.episode_details_tabs.tabs[3].help,
build_context_clue_string(&MANUAL_EPISODE_SEARCH_CONTEXT_CLUES)
);
assert_eq!(
episode_details_modal.episode_details_tabs.tabs[3].contextual_help,
Some(build_context_clue_string(
&MANUAL_EPISODE_SEARCH_CONTEXTUAL_CONTEXT_CLUES
))
);
}
#[test]
fn test_season_details_modal_default() {
let season_details_modal = SeasonDetailsModal::default();
assert!(season_details_modal.episodes.is_empty());
assert!(season_details_modal.episode_details_modal.is_none());
assert!(season_details_modal.season_releases.is_empty());
assert_eq!(season_details_modal.season_details_tabs.tabs.len(), 2);
assert_str_eq!(
season_details_modal.season_details_tabs.tabs[0].title,
"Episodes"
);
assert_eq!(
season_details_modal.season_details_tabs.tabs[0].route,
ActiveSonarrBlock::SeasonDetails.into()
);
assert!(season_details_modal.season_details_tabs.tabs[0]
.help
.is_empty());
assert_eq!(
season_details_modal.season_details_tabs.tabs[0].contextual_help,
Some(build_context_clue_string(&SEASON_DETAILS_CONTEXT_CLUES))
);
assert_str_eq!(
season_details_modal.season_details_tabs.tabs[1].title,
"Manual Search"
);
assert_eq!(
season_details_modal.season_details_tabs.tabs[1].route,
ActiveSonarrBlock::ManualSeasonSearch.into()
);
assert!(season_details_modal.season_details_tabs.tabs[1]
.help
.is_empty());
assert_eq!(
season_details_modal.season_details_tabs.tabs[1].contextual_help,
Some(build_context_clue_string(
&MANUAL_SEASON_SEARCH_CONTEXT_CLUES
))
);
}
}