feat(app): Dispatch support for all relevant Sonarr blocks

This commit is contained in:
2024-11-27 17:06:20 -07:00
parent 73a4129000
commit f139db07d9
86 changed files with 4075 additions and 3005 deletions
@@ -25,18 +25,17 @@ mod tests {
BlockSelectionState::new(&DELETE_MOVIE_SELECTION_BLOCKS);
app.data.radarr_data.selected_block.next();
DeleteMovieHandler::with(&key, &mut app, &ActiveRadarrBlock::DeleteMoviePrompt, &None)
.handle();
DeleteMovieHandler::with(key, &mut app, ActiveRadarrBlock::DeleteMoviePrompt, None).handle();
if key == Key::Up {
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::DeleteMovieToggleDeleteFile
ActiveRadarrBlock::DeleteMovieToggleDeleteFile
);
} else {
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::DeleteMovieConfirmPrompt
ActiveRadarrBlock::DeleteMovieConfirmPrompt
);
}
}
@@ -51,12 +50,11 @@ mod tests {
BlockSelectionState::new(&DELETE_MOVIE_SELECTION_BLOCKS);
app.data.radarr_data.selected_block.next();
DeleteMovieHandler::with(&key, &mut app, &ActiveRadarrBlock::DeleteMoviePrompt, &None)
.handle();
DeleteMovieHandler::with(key, &mut app, ActiveRadarrBlock::DeleteMoviePrompt, None).handle();
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::DeleteMovieToggleAddListExclusion
ActiveRadarrBlock::DeleteMovieToggleAddListExclusion
);
}
}
@@ -70,13 +68,11 @@ mod tests {
fn test_left_right_prompt_toggle(#[values(Key::Left, Key::Right)] key: Key) {
let mut app = App::default();
DeleteMovieHandler::with(&key, &mut app, &ActiveRadarrBlock::DeleteMoviePrompt, &None)
.handle();
DeleteMovieHandler::with(key, &mut app, ActiveRadarrBlock::DeleteMoviePrompt, None).handle();
assert!(app.data.radarr_data.prompt_confirm);
DeleteMovieHandler::with(&key, &mut app, &ActiveRadarrBlock::DeleteMoviePrompt, &None)
.handle();
DeleteMovieHandler::with(key, &mut app, ActiveRadarrBlock::DeleteMoviePrompt, None).handle();
assert!(!app.data.radarr_data.prompt_confirm);
}
@@ -109,14 +105,14 @@ mod tests {
app.data.radarr_data.add_list_exclusion = true;
DeleteMovieHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
assert!(!app.data.radarr_data.prompt_confirm);
assert!(!app.data.radarr_data.delete_movie_files);
@@ -140,14 +136,14 @@ mod tests {
.set_index(DELETE_MOVIE_SELECTION_BLOCKS.len() - 1);
DeleteMovieHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
Some(RadarrEvent::DeleteMovie(None))
@@ -169,16 +165,16 @@ mod tests {
app.data.radarr_data.add_list_exclusion = true;
DeleteMovieHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::DeleteMoviePrompt.into()
ActiveRadarrBlock::DeleteMoviePrompt.into()
);
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
assert!(!app.should_refresh);
@@ -196,25 +192,25 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::DeleteMoviePrompt.into());
DeleteMovieHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(app.get_current_route(), &current_route);
assert_eq!(app.get_current_route(), current_route);
assert_eq!(app.data.radarr_data.delete_movie_files, true);
DeleteMovieHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(app.get_current_route(), &current_route);
assert_eq!(app.get_current_route(), current_route);
assert_eq!(app.data.radarr_data.delete_movie_files, false);
}
}
@@ -236,14 +232,14 @@ mod tests {
app.data.radarr_data.add_list_exclusion = true;
DeleteMovieHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert!(!app.data.radarr_data.prompt_confirm);
assert!(!app.data.radarr_data.delete_movie_files);
assert!(!app.data.radarr_data.add_list_exclusion);
@@ -276,14 +272,14 @@ mod tests {
.set_index(DELETE_MOVIE_SELECTION_BLOCKS.len() - 1);
DeleteMovieHandler::with(
&DEFAULT_KEYBINDINGS.confirm.key,
DEFAULT_KEYBINDINGS.confirm.key,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
)
.handle();
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
Some(RadarrEvent::DeleteMovie(None))
@@ -299,9 +295,9 @@ mod tests {
fn test_delete_movie_handler_accepts() {
ActiveRadarrBlock::iter().for_each(|active_radarr_block| {
if DELETE_MOVIE_BLOCKS.contains(&active_radarr_block) {
assert!(DeleteMovieHandler::accepts(&active_radarr_block));
assert!(DeleteMovieHandler::accepts(active_radarr_block));
} else {
assert!(!DeleteMovieHandler::accepts(&active_radarr_block));
assert!(!DeleteMovieHandler::accepts(active_radarr_block));
}
});
}
@@ -312,10 +308,10 @@ mod tests {
app.is_loading = true;
let handler = DeleteMovieHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
);
assert!(!handler.is_ready());
@@ -327,10 +323,10 @@ mod tests {
app.is_loading = false;
let handler = DeleteMovieHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::DeleteMoviePrompt,
&None,
ActiveRadarrBlock::DeleteMoviePrompt,
None,
);
assert!(handler.is_ready());