feat: Added initial Sonarr CLI support and the initial network handler setup for the TUI

This commit is contained in:
2024-11-10 21:23:55 -07:00
parent b6f5b9d08c
commit 60d61b9e31
28 changed files with 2419 additions and 761 deletions
+1
View File
@@ -1 +1,2 @@
pub mod radarr;
pub mod sonarr;
@@ -19,6 +19,14 @@ mod tests {
use crate::assert_movie_info_tabs_reset;
use crate::models::BlockSelectionState;
#[test]
fn test_from_active_radarr_block_to_route() {
assert_eq!(
Route::from(ActiveRadarrBlock::AddMoviePrompt),
Route::Radarr(ActiveRadarrBlock::AddMoviePrompt, None)
);
}
#[test]
fn test_from_tuple_to_route_with_context() {
assert_eq!(
@@ -60,7 +68,7 @@ mod tests {
assert_eq!(radarr_data.disk_space_vec, Vec::new());
assert!(radarr_data.version.is_empty());
assert_eq!(radarr_data.start_time, <DateTime<Utc>>::default());
assert!(radarr_data.movies.items.is_empty());
assert!(radarr_data.movies.is_empty());
assert_eq!(radarr_data.selected_block, BlockSelectionState::default());
assert!(radarr_data.downloads.items.is_empty());
assert!(radarr_data.indexers.items.is_empty());
+1
View File
@@ -0,0 +1 @@
pub mod sonarr_data;
@@ -0,0 +1,43 @@
use chrono::{DateTime, Utc};
use strum::EnumIter;
use crate::models::{sonarr_models::Series, stateful_table::StatefulTable, Route};
#[cfg(test)]
#[path = "sonarr_data_tests.rs"]
mod sonarr_data_tests;
pub struct SonarrData {
pub version: String,
pub start_time: DateTime<Utc>,
pub series: StatefulTable<Series>,
}
impl Default for SonarrData {
fn default() -> SonarrData {
SonarrData {
version: String::new(),
start_time: DateTime::default(),
series: StatefulTable::default(),
}
}
}
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default, EnumIter)]
pub enum ActiveSonarrBlock {
#[default]
Series,
SeriesSortPrompt,
}
impl From<ActiveSonarrBlock> for Route {
fn from(active_sonarr_block: ActiveSonarrBlock) -> Route {
Route::Sonarr(active_sonarr_block, None)
}
}
impl From<(ActiveSonarrBlock, Option<ActiveSonarrBlock>)> for Route {
fn from(value: (ActiveSonarrBlock, Option<ActiveSonarrBlock>)) -> Route {
Route::Sonarr(value.0, value.1)
}
}
@@ -0,0 +1,42 @@
#[cfg(test)]
mod tests {
mod sonarr_data_tests {
use chrono::{DateTime, Utc};
use crate::models::{
servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SonarrData},
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_sonarr_data_defaults() {
let sonarr_data = SonarrData::default();
assert!(sonarr_data.version.is_empty());
assert_eq!(sonarr_data.start_time, <DateTime<Utc>>::default());
assert!(sonarr_data.series.is_empty());
}
}
}