feat(models): Added the necessary contextual help and tabs for the Sonarr UI
This commit is contained in:
@@ -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
|
||||
))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user