test: Updated Rust edition to 2024 and refactored network module tests to be more idiomatic

This commit is contained in:
2025-12-03 14:49:27 -07:00
parent c4e8d64710
commit ad58912baf
257 changed files with 4033 additions and 4380 deletions
@@ -1,15 +1,15 @@
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::handlers::{KeyEventHandler, handle_prompt_toggle};
use crate::models::servarr_data::sonarr::modals::AddSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, ADD_SERIES_BLOCKS, ADD_SERIES_SELECTION_BLOCKS,
ADD_SERIES_BLOCKS, ADD_SERIES_SELECTION_BLOCKS, ActiveSonarrBlock,
};
use crate::models::sonarr_models::{AddSeriesBody, AddSeriesOptions, AddSeriesSearchResult};
use crate::models::stateful_table::StatefulTable;
use crate::models::{BlockSelectionState, Scrollable};
use crate::network::sonarr_network::SonarrEvent;
use crate::{
handle_table_events, handle_text_box_keys, handle_text_box_left_right_keys, matches_key, App, Key,
App, Key, handle_table_events, handle_text_box_keys, handle_text_box_left_right_keys, matches_key,
};
#[cfg(test)]
@@ -5,29 +5,29 @@ mod tests {
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::event::Key;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::add_series_handler::AddSeriesHandler;
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::add_series_search_result;
use crate::handlers::KeyEventHandler;
use crate::models::HorizontallyScrollableText;
use crate::models::servarr_data::sonarr::modals::AddSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, ADD_SERIES_BLOCKS};
use crate::models::servarr_data::sonarr::sonarr_data::{ADD_SERIES_BLOCKS, ActiveSonarrBlock};
use crate::models::servarr_models::RootFolder;
use crate::models::sonarr_models::{
AddSeriesBody, AddSeriesOptions, AddSeriesSearchResult, SeriesMonitor, SeriesType,
};
use crate::models::stateful_table::StatefulTable;
use crate::models::HorizontallyScrollableText;
mod test_handle_scroll_up_and_down {
use pretty_assertions::assert_eq;
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::sonarr::modals::AddSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::ADD_SERIES_SELECTION_BLOCKS;
use crate::models::BlockSelectionState;
use crate::simple_stateful_iterable_vec;
use super::*;
@@ -898,11 +898,11 @@ mod tests {
use pretty_assertions::{assert_eq, assert_str_eq};
use rstest::rstest;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::sonarr::modals::AddSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::ADD_SERIES_SELECTION_BLOCKS;
use crate::models::sonarr_models::Series;
use crate::models::stateful_table::StatefulTable;
use crate::models::BlockSelectionState;
use crate::network::sonarr_network::SonarrEvent;
use super::*;
@@ -981,33 +981,39 @@ mod tests {
ActiveSonarrBlock::AddSeriesSelectRootFolder
);
assert!(app.data.sonarr_data.add_series_modal.is_some());
assert!(!app
.data
.sonarr_data
.add_series_modal
.as_ref()
.unwrap()
.monitor_list
.items
.is_empty());
assert!(!app
.data
.sonarr_data
.add_series_modal
.as_ref()
.unwrap()
.series_type_list
.items
.is_empty());
assert!(!app
.data
.sonarr_data
.add_series_modal
.as_ref()
.unwrap()
.quality_profile_list
.items
.is_empty());
assert!(
!app
.data
.sonarr_data
.add_series_modal
.as_ref()
.unwrap()
.monitor_list
.items
.is_empty()
);
assert!(
!app
.data
.sonarr_data
.add_series_modal
.as_ref()
.unwrap()
.series_type_list
.items
.is_empty()
);
assert!(
!app
.data
.sonarr_data
.add_series_modal
.as_ref()
.unwrap()
.quality_profile_list
.items
.is_empty()
);
assert_str_eq!(
app
.data
@@ -1501,8 +1507,8 @@ mod tests {
use super::*;
use crate::{
models::{
servarr_data::sonarr::{modals::AddSeriesModal, sonarr_data::ADD_SERIES_SELECTION_BLOCKS},
BlockSelectionState,
servarr_data::sonarr::{modals::AddSeriesModal, sonarr_data::ADD_SERIES_SELECTION_BLOCKS},
},
network::sonarr_network::SonarrEvent,
};
@@ -3,7 +3,7 @@ use crate::network::sonarr_network::SonarrEvent;
use crate::{
app::App,
event::Key,
handlers::{handle_prompt_toggle, KeyEventHandler},
handlers::{KeyEventHandler, handle_prompt_toggle},
matches_key,
models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, DELETE_SERIES_BLOCKS},
};
@@ -4,12 +4,12 @@ mod tests {
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::event::Key;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::delete_series_handler::DeleteSeriesHandler;
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::series;
use crate::handlers::KeyEventHandler;
use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, DELETE_SERIES_BLOCKS};
use crate::models::sonarr_models::DeleteSeriesParams;
@@ -17,8 +17,8 @@ mod tests {
use pretty_assertions::assert_eq;
use rstest::rstest;
use crate::models::servarr_data::sonarr::sonarr_data::DELETE_SERIES_SELECTION_BLOCKS;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::sonarr::sonarr_data::DELETE_SERIES_SELECTION_BLOCKS;
use super::*;
@@ -86,8 +86,8 @@ mod tests {
mod test_handle_submit {
use pretty_assertions::assert_eq;
use crate::models::servarr_data::sonarr::sonarr_data::DELETE_SERIES_SELECTION_BLOCKS;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::sonarr::sonarr_data::DELETE_SERIES_SELECTION_BLOCKS;
use crate::network::sonarr_network::SonarrEvent;
use super::*;
@@ -261,7 +261,7 @@ mod tests {
mod test_handle_key_char {
use crate::{
models::{
servarr_data::sonarr::sonarr_data::DELETE_SERIES_SELECTION_BLOCKS, BlockSelectionState,
BlockSelectionState, servarr_data::sonarr::sonarr_data::DELETE_SERIES_SELECTION_BLOCKS,
},
network::sonarr_network::SonarrEvent,
};
@@ -1,10 +1,10 @@
use crate::app::App;
use crate::event::Key;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::handlers::{KeyEventHandler, handle_prompt_toggle};
use crate::models::Scrollable;
use crate::models::servarr_data::sonarr::modals::EditSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, EDIT_SERIES_BLOCKS};
use crate::models::sonarr_models::EditSeriesParams;
use crate::models::Scrollable;
use crate::network::sonarr_network::SonarrEvent;
use crate::{handle_text_box_keys, handle_text_box_left_right_keys, matches_key};
@@ -5,12 +5,12 @@ mod tests {
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::event::Key;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::edit_series_handler::EditSeriesHandler;
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::series;
use crate::handlers::KeyEventHandler;
use crate::models::servarr_data::sonarr::modals::EditSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, EDIT_SERIES_BLOCKS};
use crate::models::sonarr_models::{EditSeriesParams, Series, SeriesType};
@@ -20,9 +20,9 @@ mod tests {
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::sonarr::modals::EditSeriesModal;
use crate::models::servarr_data::sonarr::sonarr_data::EDIT_SERIES_SELECTION_BLOCKS;
use crate::models::BlockSelectionState;
use super::*;
@@ -696,15 +696,17 @@ mod tests {
.handle();
assert!(!app.ignore_special_keys_for_textbox_input);
assert!(!app
.data
.sonarr_data
.edit_series_modal
.as_ref()
.unwrap()
.path
.text
.is_empty());
assert!(
!app
.data
.sonarr_data
.edit_series_modal
.as_ref()
.unwrap()
.path
.text
.is_empty()
);
assert_eq!(
app.get_current_route(),
ActiveSonarrBlock::EditSeriesPrompt.into()
@@ -732,15 +734,17 @@ mod tests {
.handle();
assert!(!app.ignore_special_keys_for_textbox_input);
assert!(!app
.data
.sonarr_data
.edit_series_modal
.as_mut()
.unwrap()
.tags
.text
.is_empty());
assert!(
!app
.data
.sonarr_data
.edit_series_modal
.as_mut()
.unwrap()
.tags
.text
.is_empty()
);
assert_eq!(
app.get_current_route(),
ActiveSonarrBlock::EditSeriesPrompt.into()
@@ -1168,10 +1172,10 @@ mod tests {
use super::*;
use crate::{
models::{
BlockSelectionState,
servarr_data::sonarr::{
modals::EditSeriesModal, sonarr_data::EDIT_SERIES_SELECTION_BLOCKS,
},
BlockSelectionState,
},
network::sonarr_network::SonarrEvent,
};
@@ -2,7 +2,7 @@ use crate::app::App;
use crate::event::Key;
use crate::handlers::sonarr_handlers::library::season_details_handler::releases_sorting_options;
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::handlers::{KeyEventHandler, handle_prompt_toggle};
use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS};
use crate::models::sonarr_models::{SonarrHistoryItem, SonarrRelease, SonarrReleaseDownloadBody};
use crate::network::sonarr_network::SonarrEvent;
@@ -1,10 +1,10 @@
#[cfg(test)]
mod tests {
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::episode_details_handler::EpisodeDetailsHandler;
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::episode;
use crate::handlers::KeyEventHandler;
use crate::models::servarr_data::sonarr::modals::{EpisodeDetailsModal, SeasonDetailsModal};
use crate::models::servarr_data::sonarr::sonarr_data::sonarr_test_utils::utils::create_test_sonarr_data;
use crate::models::servarr_data::sonarr::sonarr_data::{
@@ -416,14 +416,16 @@ mod tests {
app.get_current_route(),
ActiveSonarrBlock::SeasonDetails.into()
);
assert!(app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.episode_details_modal
.is_none());
assert!(
app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.episode_details_modal
.is_none()
);
}
}
@@ -5,14 +5,14 @@ mod tests {
use std::cmp::Ordering;
use strum::IntoEnumIterator;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::event::Key;
use crate::handlers::sonarr_handlers::library::{series_sorting_options, LibraryHandler};
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::series;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::{LibraryHandler, series_sorting_options};
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::series;
use crate::models::servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, ADD_SERIES_BLOCKS, DELETE_SERIES_BLOCKS, EDIT_SERIES_BLOCKS,
ADD_SERIES_BLOCKS, ActiveSonarrBlock, DELETE_SERIES_BLOCKS, EDIT_SERIES_BLOCKS,
EPISODE_DETAILS_BLOCKS, LIBRARY_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS,
};
use crate::models::sonarr_models::{Series, SeriesStatistics, SeriesStatus, SeriesType};
@@ -287,8 +287,8 @@ mod tests {
use serde_json::Number;
use strum::IntoEnumIterator;
use crate::models::servarr_data::sonarr::sonarr_data::sonarr_test_utils::utils::create_test_sonarr_data;
use crate::models::servarr_data::sonarr::sonarr_data::SonarrData;
use crate::models::servarr_data::sonarr::sonarr_data::sonarr_test_utils::utils::create_test_sonarr_data;
use crate::models::sonarr_models::SeriesType;
use crate::network::sonarr_network::SonarrEvent;
+2 -2
View File
@@ -7,16 +7,16 @@ use crate::{
app::App,
event::Key,
handle_table_events,
handlers::{handle_clear_errors, handle_prompt_toggle, KeyEventHandler},
handlers::{KeyEventHandler, handle_clear_errors, handle_prompt_toggle},
matches_key,
models::{
BlockSelectionState, HorizontallyScrollableText,
servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, DELETE_SERIES_SELECTION_BLOCKS, EDIT_SERIES_SELECTION_BLOCKS,
LIBRARY_BLOCKS,
},
sonarr_models::Series,
stateful_table::SortOption,
BlockSelectionState, HorizontallyScrollableText,
},
network::sonarr_network::SonarrEvent,
};
@@ -2,7 +2,7 @@ use crate::app::App;
use crate::event::Key;
use crate::handlers::sonarr_handlers::history::history_sorting_options;
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::handlers::{KeyEventHandler, handle_prompt_toggle};
use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SEASON_DETAILS_BLOCKS};
use crate::models::servarr_models::Language;
use crate::models::sonarr_models::{
@@ -460,8 +460,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveSonarrBlock> for SeasonDetailsHandler
}
}
pub(in crate::handlers::sonarr_handlers::library) fn releases_sorting_options(
) -> Vec<SortOption<SonarrRelease>> {
pub(in crate::handlers::sonarr_handlers::library) fn releases_sorting_options()
-> Vec<SortOption<SonarrRelease>> {
vec![
SortOption {
name: "Source",
@@ -1,12 +1,13 @@
#[cfg(test)]
mod tests {
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::season_details_handler::{
releases_sorting_options, SeasonDetailsHandler,
SeasonDetailsHandler, releases_sorting_options,
};
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::episode;
use crate::handlers::KeyEventHandler;
use crate::models::HorizontallyScrollableText;
use crate::models::servarr_data::sonarr::modals::SeasonDetailsModal;
use crate::models::servarr_data::sonarr::sonarr_data::sonarr_test_utils::utils::create_test_sonarr_data;
use crate::models::servarr_data::sonarr::sonarr_data::{
@@ -14,7 +15,6 @@ mod tests {
};
use crate::models::servarr_models::{Language, Quality, QualityWrapper};
use crate::models::sonarr_models::{SonarrRelease, SonarrReleaseDownloadBody};
use crate::models::HorizontallyScrollableText;
use pretty_assertions::{assert_eq, assert_str_eq};
use rstest::rstest;
use serde_json::Number;
@@ -485,33 +485,39 @@ mod tests {
app.get_current_route(),
ActiveSonarrBlock::SeasonHistory.into()
);
assert!(app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.season_history
.filter
.is_none());
assert!(app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.season_history
.filtered_items
.is_none());
assert!(app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.season_history
.filtered_state
.is_none());
assert!(
app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.season_history
.filter
.is_none()
);
assert!(
app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.season_history
.filtered_items
.is_none()
);
assert!(
app
.data
.sonarr_data
.season_details_modal
.as_ref()
.unwrap()
.season_history
.filtered_state
.is_none()
);
}
#[rstest]
@@ -2,12 +2,12 @@ use crate::app::App;
use crate::event::Key;
use crate::handlers::sonarr_handlers::history::history_sorting_options;
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_prompt_toggle, KeyEventHandler};
use crate::handlers::{KeyEventHandler, handle_prompt_toggle};
use crate::models::BlockSelectionState;
use crate::models::servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, EDIT_SERIES_SELECTION_BLOCKS, SERIES_DETAILS_BLOCKS,
};
use crate::models::sonarr_models::{Season, SonarrHistoryItem};
use crate::models::BlockSelectionState;
use crate::network::sonarr_network::SonarrEvent;
use crate::{handle_table_events, matches_key};
@@ -1,11 +1,11 @@
#[cfg(test)]
mod tests {
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::app::App;
use crate::app::key_binding::DEFAULT_KEYBINDINGS;
use crate::event::Key;
use crate::handlers::KeyEventHandler;
use crate::handlers::sonarr_handlers::library::series_details_handler::SeriesDetailsHandler;
use crate::handlers::sonarr_handlers::sonarr_handler_test_utils::utils::{season, series};
use crate::handlers::KeyEventHandler;
use crate::models::servarr_data::sonarr::sonarr_data::{
ActiveSonarrBlock, SERIES_DETAILS_BLOCKS,
};
@@ -304,37 +304,43 @@ mod tests {
app.get_current_route(),
ActiveSonarrBlock::SeriesHistory.into()
);
assert!(app
.data
.sonarr_data
.series_history
.as_ref()
.unwrap()
.filter
.is_none());
assert!(app
.data
.sonarr_data
.series_history
.as_ref()
.unwrap()
.filtered_items
.is_none());
assert!(app
.data
.sonarr_data
.series_history
.as_ref()
.unwrap()
.filtered_state
.is_none());
assert!(
app
.data
.sonarr_data
.series_history
.as_ref()
.unwrap()
.filter
.is_none()
);
assert!(
app
.data
.sonarr_data
.series_history
.as_ref()
.unwrap()
.filtered_items
.is_none()
);
assert!(
app
.data
.sonarr_data
.series_history
.as_ref()
.unwrap()
.filtered_state
.is_none()
);
}
}
mod test_handle_key_char {
use super::*;
use crate::models::servarr_data::sonarr::sonarr_data::sonarr_test_utils::utils::create_test_sonarr_data;
use crate::models::servarr_data::sonarr::sonarr_data::SonarrData;
use crate::models::servarr_data::sonarr::sonarr_data::sonarr_test_utils::utils::create_test_sonarr_data;
use crate::models::sonarr_models::{Series, SeriesType};
use crate::network::sonarr_network::SonarrEvent;
use crate::test_edit_series_key;