refactor(handlers): Refactored the handlers to all use the handle_table_events macro when appropriate and created tests for the macro so tests don't have to be duplicated across each handler

This commit is contained in:
2024-12-11 17:03:52 -07:00
parent c09950d0af
commit ed2211586e
44 changed files with 1592 additions and 9288 deletions
@@ -20,123 +20,11 @@ mod tests {
use crate::models::servarr_data::radarr::modals::AddMovieModal;
use crate::models::servarr_data::radarr::radarr_data::ADD_MOVIE_SELECTION_BLOCKS;
use crate::models::stateful_table::StatefulTable;
use crate::models::BlockSelectionState;
use crate::simple_stateful_iterable_vec;
use super::*;
#[rstest]
fn test_add_movie_search_results_scroll(
#[values(DEFAULT_KEYBINDINGS.up.key, DEFAULT_KEYBINDINGS.down.key)] key: Key,
) {
let mut app = App::default();
let mut add_searched_movies = StatefulTable::default();
add_searched_movies.set_items(simple_stateful_iterable_vec!(
AddMovieSearchResult,
HorizontallyScrollableText
));
app.data.radarr_data.add_searched_movies = Some(add_searched_movies);
AddMovieHandler::with(
key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 2"
);
AddMovieHandler::with(
key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 1"
);
}
#[rstest]
fn test_add_movie_search_results_scroll_no_op_when_not_ready(
#[values(DEFAULT_KEYBINDINGS.up.key, DEFAULT_KEYBINDINGS.down.key)] key: Key,
) {
let mut app = App::default();
app.is_loading = true;
let mut add_searched_movies = StatefulTable::default();
add_searched_movies.set_items(simple_stateful_iterable_vec!(
AddMovieSearchResult,
HorizontallyScrollableText
));
app.data.radarr_data.add_searched_movies = Some(add_searched_movies);
AddMovieHandler::with(
key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 1"
);
AddMovieHandler::with(
key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 1"
);
}
#[rstest]
fn test_add_movie_select_monitor_scroll(
#[values(DEFAULT_KEYBINDINGS.up.key, DEFAULT_KEYBINDINGS.down.key)] key: Key,
@@ -421,117 +309,9 @@ mod tests {
use crate::extended_stateful_iterable_vec;
use crate::models::servarr_data::radarr::modals::AddMovieModal;
use crate::models::stateful_table::StatefulTable;
use super::*;
#[test]
fn test_add_movie_search_results_home_end() {
let mut app = App::default();
let mut add_searched_movies = StatefulTable::default();
add_searched_movies.set_items(extended_stateful_iterable_vec!(
AddMovieSearchResult,
HorizontallyScrollableText
));
app.data.radarr_data.add_searched_movies = Some(add_searched_movies);
AddMovieHandler::with(
DEFAULT_KEYBINDINGS.end.key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 3"
);
AddMovieHandler::with(
DEFAULT_KEYBINDINGS.home.key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 1"
);
}
#[test]
fn test_add_movie_search_results_home_end_no_op_when_not_ready() {
let mut app = App::default();
app.is_loading = true;
let mut add_searched_movies = StatefulTable::default();
add_searched_movies.set_items(extended_stateful_iterable_vec!(
AddMovieSearchResult,
HorizontallyScrollableText
));
app.data.radarr_data.add_searched_movies = Some(add_searched_movies);
AddMovieHandler::with(
DEFAULT_KEYBINDINGS.end.key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 1"
);
AddMovieHandler::with(
DEFAULT_KEYBINDINGS.home.key,
&mut app,
ActiveRadarrBlock::AddMovieSearchResults,
None,
)
.handle();
assert_str_eq!(
app
.data
.radarr_data
.add_searched_movies
.as_ref()
.unwrap()
.current_selection()
.title
.to_string(),
"Test 1"
);
}
#[test]
fn test_add_movie_select_monitor_home_end() {
let monitor_vec = Vec::from_iter(MovieMonitor::iter());