feat: Added initial Sonarr CLI support and the initial network handler setup for the TUI
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user