Added the full Radarr CLI so users can programmatically access all the same management features as in the TUI
This commit is contained in:
@@ -367,7 +367,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for AddMovieHandler<'a,
|
||||
match self.app.data.radarr_data.selected_block.get_active_block() {
|
||||
ActiveRadarrBlock::AddMovieConfirmPrompt => {
|
||||
if self.app.data.radarr_data.prompt_confirm {
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddMovie);
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddMovie(None));
|
||||
}
|
||||
|
||||
self.app.pop_navigation_stack();
|
||||
|
||||
@@ -416,6 +416,8 @@ mod tests {
|
||||
}
|
||||
|
||||
mod test_handle_home_end {
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::extended_stateful_iterable_vec;
|
||||
@@ -769,14 +771,14 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_search
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
4
|
||||
);
|
||||
|
||||
@@ -789,14 +791,14 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_search
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -818,7 +820,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
@@ -826,7 +828,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
4
|
||||
);
|
||||
|
||||
@@ -839,7 +841,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
@@ -847,13 +849,15 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
mod test_handle_left_right_action {
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use crate::models::servarr_data::radarr::modals::AddMovieModal;
|
||||
use rstest::rstest;
|
||||
|
||||
@@ -886,14 +890,14 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_search
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
1
|
||||
);
|
||||
|
||||
@@ -906,14 +910,14 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_search
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -935,7 +939,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
@@ -943,7 +947,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
1
|
||||
);
|
||||
|
||||
@@ -956,7 +960,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.add_movie_modal
|
||||
@@ -964,7 +968,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -1211,7 +1215,7 @@ mod tests {
|
||||
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
|
||||
assert_eq!(
|
||||
app.data.radarr_data.prompt_confirm_action,
|
||||
Some(RadarrEvent::AddMovie)
|
||||
Some(RadarrEvent::AddMovie(None))
|
||||
);
|
||||
assert!(app.data.radarr_data.add_movie_modal.is_some());
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for DeleteMovieHandler<'
|
||||
match self.app.data.radarr_data.selected_block.get_active_block() {
|
||||
ActiveRadarrBlock::DeleteMovieConfirmPrompt => {
|
||||
if self.app.data.radarr_data.prompt_confirm {
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteMovie);
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DeleteMovie(None));
|
||||
self.app.should_refresh = true;
|
||||
} else {
|
||||
self.app.data.radarr_data.reset_delete_movie_preferences();
|
||||
|
||||
@@ -150,7 +150,7 @@ mod tests {
|
||||
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
|
||||
assert_eq!(
|
||||
app.data.radarr_data.prompt_confirm_action,
|
||||
Some(RadarrEvent::DeleteMovie)
|
||||
Some(RadarrEvent::DeleteMovie(None))
|
||||
);
|
||||
assert!(app.should_refresh);
|
||||
assert!(app.data.radarr_data.prompt_confirm);
|
||||
|
||||
@@ -222,7 +222,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditMovieHandler<'a,
|
||||
match self.app.data.radarr_data.selected_block.get_active_block() {
|
||||
ActiveRadarrBlock::EditMovieConfirmPrompt => {
|
||||
if self.app.data.radarr_data.prompt_confirm {
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditMovie);
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditMovie(None));
|
||||
self.app.should_refresh = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -182,6 +182,8 @@ mod tests {
|
||||
}
|
||||
|
||||
mod test_handle_home_end {
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::servarr_data::radarr::modals::EditMovieModal;
|
||||
@@ -318,7 +320,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -326,7 +328,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.path
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
4
|
||||
);
|
||||
|
||||
@@ -339,7 +341,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -347,7 +349,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.path
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -369,7 +371,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -377,7 +379,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
4
|
||||
);
|
||||
|
||||
@@ -390,7 +392,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -398,13 +400,15 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
mod test_handle_left_right_action {
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use crate::models::servarr_data::radarr::modals::EditMovieModal;
|
||||
use rstest::rstest;
|
||||
|
||||
@@ -440,7 +444,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -448,7 +452,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.path
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
1
|
||||
);
|
||||
|
||||
@@ -461,7 +465,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -469,7 +473,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.path
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -491,7 +495,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -499,7 +503,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
1
|
||||
);
|
||||
|
||||
@@ -512,7 +516,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.edit_movie_modal
|
||||
@@ -520,7 +524,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.tags
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(Ordering::SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -661,7 +665,7 @@ mod tests {
|
||||
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
|
||||
assert_eq!(
|
||||
app.data.radarr_data.prompt_confirm_action,
|
||||
Some(RadarrEvent::EditMovie)
|
||||
Some(RadarrEvent::EditMovie(None))
|
||||
);
|
||||
assert!(app.data.radarr_data.edit_movie_modal.is_some());
|
||||
assert!(app.should_refresh);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use core::sync::atomic::Ordering::SeqCst;
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
use rstest::rstest;
|
||||
use std::cmp::Ordering;
|
||||
@@ -213,7 +214,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -221,7 +222,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
4
|
||||
);
|
||||
|
||||
@@ -234,7 +235,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -242,7 +243,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -266,7 +267,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -274,7 +275,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
4
|
||||
);
|
||||
|
||||
@@ -287,7 +288,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -295,7 +296,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -488,7 +489,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -496,7 +497,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
1
|
||||
);
|
||||
|
||||
@@ -509,7 +510,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -517,7 +518,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
@@ -536,7 +537,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -544,7 +545,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
1
|
||||
);
|
||||
|
||||
@@ -557,7 +558,7 @@ mod tests {
|
||||
.handle();
|
||||
|
||||
assert_eq!(
|
||||
*app
|
||||
app
|
||||
.data
|
||||
.radarr_data
|
||||
.movies
|
||||
@@ -565,7 +566,7 @@ mod tests {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.offset
|
||||
.borrow(),
|
||||
.load(SeqCst),
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
@@ -349,14 +349,14 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
|
||||
ActiveRadarrBlock::AutomaticallySearchMoviePrompt => {
|
||||
if self.app.data.radarr_data.prompt_confirm {
|
||||
self.app.data.radarr_data.prompt_confirm_action =
|
||||
Some(RadarrEvent::TriggerAutomaticSearch);
|
||||
Some(RadarrEvent::TriggerAutomaticSearch(None));
|
||||
}
|
||||
|
||||
self.app.pop_navigation_stack();
|
||||
}
|
||||
ActiveRadarrBlock::UpdateAndScanPrompt => {
|
||||
if self.app.data.radarr_data.prompt_confirm {
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::UpdateAndScan);
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::UpdateAndScan(None));
|
||||
}
|
||||
|
||||
self.app.pop_navigation_stack();
|
||||
@@ -368,7 +368,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
|
||||
}
|
||||
ActiveRadarrBlock::ManualSearchConfirmPrompt => {
|
||||
if self.app.data.radarr_data.prompt_confirm {
|
||||
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::DownloadRelease);
|
||||
self.app.data.radarr_data.prompt_confirm_action =
|
||||
Some(RadarrEvent::DownloadRelease(None));
|
||||
}
|
||||
|
||||
self.app.pop_navigation_stack();
|
||||
|
||||
@@ -1292,12 +1292,15 @@ mod tests {
|
||||
#[rstest]
|
||||
#[case(
|
||||
ActiveRadarrBlock::AutomaticallySearchMoviePrompt,
|
||||
RadarrEvent::TriggerAutomaticSearch
|
||||
RadarrEvent::TriggerAutomaticSearch(None)
|
||||
)]
|
||||
#[case(
|
||||
ActiveRadarrBlock::UpdateAndScanPrompt,
|
||||
RadarrEvent::UpdateAndScan(None)
|
||||
)]
|
||||
#[case(ActiveRadarrBlock::UpdateAndScanPrompt, RadarrEvent::UpdateAndScan)]
|
||||
#[case(
|
||||
ActiveRadarrBlock::ManualSearchConfirmPrompt,
|
||||
RadarrEvent::DownloadRelease
|
||||
RadarrEvent::DownloadRelease(None)
|
||||
)]
|
||||
fn test_movie_info_prompt_confirm_submit(
|
||||
#[case] prompt_block: ActiveRadarrBlock,
|
||||
|
||||
Reference in New Issue
Block a user