refactor: Created dedicated proptests and assertions to clean up the handler unit tests

This commit is contained in:
2025-12-04 22:57:06 -07:00
parent 35dce0bf01
commit 49fd086b92
46 changed files with 1023 additions and 1018 deletions
@@ -1,5 +1,8 @@
#[cfg(test)]
mod tests {
use crate::assert_modal_absent;
use crate::assert_modal_present;
use crate::assert_navigation_pushed;
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::add_movie_search_result;
use crate::models::stateful_table::StatefulTable;
use pretty_assertions::assert_str_eq;
@@ -761,10 +764,7 @@ mod tests {
}
mod test_handle_submit {
use bimap::BiMap;
use pretty_assertions::{assert_eq, assert_str_eq};
use rstest::rstest;
use crate::assert_navigation_popped;
use crate::handlers::radarr_handlers::radarr_handler_test_utils::utils::{
add_movie_body, add_movie_search_result, collection_movie,
};
@@ -774,6 +774,9 @@ mod tests {
use crate::models::servarr_data::radarr::radarr_data::ADD_MOVIE_SELECTION_BLOCKS;
use crate::models::stateful_table::StatefulTable;
use crate::network::radarr_network::RadarrEvent;
use bimap::BiMap;
use pretty_assertions::{assert_eq, assert_str_eq};
use rstest::rstest;
use super::*;
@@ -847,7 +850,7 @@ mod tests {
app.data.radarr_data.selected_block.get_active_block(),
ActiveRadarrBlock::AddMovieSelectRootFolder
);
assert!(app.data.radarr_data.add_movie_modal.is_some());
assert_modal_present!(app.data.radarr_data.add_movie_modal);
assert!(
!app
.data
@@ -914,7 +917,7 @@ mod tests {
app.get_current_route(),
ActiveRadarrBlock::AddMovieSearchResults.into()
);
assert!(app.data.radarr_data.add_movie_modal.is_none());
assert_modal_absent!(app.data.radarr_data.add_movie_modal);
}
#[test]
@@ -981,7 +984,7 @@ mod tests {
)
.handle();
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_navigation_popped!(app, ActiveRadarrBlock::Movies.into());
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
}
@@ -1055,12 +1058,12 @@ mod tests {
)
.handle();
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_navigation_popped!(app, ActiveRadarrBlock::Movies.into());
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
Some(RadarrEvent::AddMovie(add_movie_body()))
);
assert!(app.data.radarr_data.add_movie_modal.is_none());
assert_modal_absent!(app.data.radarr_data.add_movie_modal);
}
#[rstest]
@@ -1092,8 +1095,8 @@ mod tests {
)
.handle();
assert_eq!(
app.get_current_route(),
assert_navigation_pushed!(
app,
(selected_block, Some(ActiveRadarrBlock::CollectionDetails)).into()
);
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
@@ -1126,10 +1129,7 @@ mod tests {
)
.handle();
assert_eq!(
app.get_current_route(),
ActiveRadarrBlock::AddMoviePrompt.into()
);
assert_navigation_popped!(app, ActiveRadarrBlock::AddMoviePrompt.into());
if active_radarr_block == ActiveRadarrBlock::AddMovieTagsInput {
assert!(!app.ignore_special_keys_for_textbox_input);
@@ -1144,9 +1144,10 @@ mod tests {
use crate::models::servarr_data::radarr::modals::AddMovieModal;
use crate::models::servarr_data::radarr::radarr_data::radarr_test_utils::utils::create_test_radarr_data;
use crate::models::stateful_table::StatefulTable;
use crate::simple_stateful_iterable_vec;
use crate::{assert_navigation_popped, simple_stateful_iterable_vec};
use super::*;
use crate::assert_navigation_pushed;
const ESC_KEY: Key = DEFAULT_KEYBINDINGS.esc.key;
@@ -1167,7 +1168,7 @@ mod tests {
.handle();
assert!(!app.ignore_special_keys_for_textbox_input);
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_navigation_popped!(app, ActiveRadarrBlock::Movies.into());
assert_eq!(app.data.radarr_data.add_movie_search, None);
}
@@ -1188,10 +1189,7 @@ mod tests {
.handle();
assert!(!app.ignore_special_keys_for_textbox_input);
assert_eq!(
app.get_current_route(),
ActiveRadarrBlock::AddMoviePrompt.into()
);
assert_navigation_popped!(app, ActiveRadarrBlock::AddMoviePrompt.into());
}
#[rstest]
@@ -1214,11 +1212,8 @@ mod tests {
AddMovieHandler::new(ESC_KEY, &mut app, active_radarr_block, None).handle();
assert_eq!(
app.get_current_route(),
ActiveRadarrBlock::AddMovieSearchInput.into()
);
assert!(app.data.radarr_data.add_searched_movies.is_none());
assert_navigation_popped!(app, ActiveRadarrBlock::AddMovieSearchInput.into());
assert_modal_absent!(app.data.radarr_data.add_searched_movies);
assert!(app.ignore_special_keys_for_textbox_input);
}
@@ -1237,10 +1232,7 @@ mod tests {
)
.handle();
assert_eq!(
app.get_current_route(),
ActiveRadarrBlock::AddMovieSearchResults.into()
);
assert_navigation_popped!(app, ActiveRadarrBlock::AddMovieSearchResults.into());
}
#[test]
@@ -1254,11 +1246,8 @@ mod tests {
AddMovieHandler::new(ESC_KEY, &mut app, ActiveRadarrBlock::AddMoviePrompt, None).handle();
assert!(!app.data.radarr_data.prompt_confirm);
assert_eq!(
app.get_current_route(),
ActiveRadarrBlock::AddMovieSearchResults.into()
);
assert!(app.data.radarr_data.add_movie_modal.is_none());
assert_navigation_popped!(app, ActiveRadarrBlock::AddMovieSearchResults.into());
assert_modal_absent!(app.data.radarr_data.add_movie_modal);
}
#[test]
@@ -1278,10 +1267,7 @@ mod tests {
.handle();
assert!(!app.ignore_special_keys_for_textbox_input);
assert_eq!(
app.get_current_route(),
ActiveRadarrBlock::AddMoviePrompt.into()
);
assert_navigation_popped!(app, ActiveRadarrBlock::AddMoviePrompt.into());
}
#[rstest]
@@ -1318,8 +1304,8 @@ mod tests {
)
.handle();
assert_eq!(
app.get_current_route(),
assert_navigation_popped!(
app,
(
ActiveRadarrBlock::AddMoviePrompt,
Some(ActiveRadarrBlock::CollectionDetails),
@@ -1336,6 +1322,7 @@ mod tests {
use super::*;
use crate::{
assert_navigation_popped,
handlers::radarr_handlers::radarr_handler_test_utils::utils::{
add_movie_body, add_movie_search_result, collection_movie,
},
@@ -1509,12 +1496,12 @@ mod tests {
)
.handle();
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_navigation_popped!(app, ActiveRadarrBlock::Movies.into());
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
Some(RadarrEvent::AddMovie(add_movie_body()))
);
assert!(app.data.radarr_data.add_movie_modal.is_none());
assert_modal_absent!(app.data.radarr_data.add_movie_modal);
}
}