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
@@ -14,22 +14,22 @@ use crate::models::{BlockSelectionState, Scrollable};
mod collection_details_handler_tests;
pub(super) struct CollectionDetailsHandler<'a, 'b> {
key: &'a Key,
key: Key,
app: &'a mut App<'b>,
active_radarr_block: &'a ActiveRadarrBlock,
_context: &'a Option<ActiveRadarrBlock>,
active_radarr_block: ActiveRadarrBlock,
_context: Option<ActiveRadarrBlock>,
}
impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionDetailsHandler<'a, 'b> {
fn accepts(active_block: &'a ActiveRadarrBlock) -> bool {
COLLECTION_DETAILS_BLOCKS.contains(active_block)
fn accepts(active_block: ActiveRadarrBlock) -> bool {
COLLECTION_DETAILS_BLOCKS.contains(&active_block)
}
fn with(
key: &'a Key,
key: Key,
app: &'a mut App<'b>,
active_block: &'a ActiveRadarrBlock,
_context: &'a Option<ActiveRadarrBlock>,
active_block: ActiveRadarrBlock,
_context: Option<ActiveRadarrBlock>,
) -> CollectionDetailsHandler<'a, 'b> {
CollectionDetailsHandler {
key,
@@ -39,7 +39,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionDetailsHan
}
}
fn get_key(&self) -> &Key {
fn get_key(&self) -> Key {
self.key
}
@@ -48,25 +48,25 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionDetailsHan
}
fn handle_scroll_up(&mut self) {
if ActiveRadarrBlock::CollectionDetails == *self.active_radarr_block {
if ActiveRadarrBlock::CollectionDetails == self.active_radarr_block {
self.app.data.radarr_data.collection_movies.scroll_up()
}
}
fn handle_scroll_down(&mut self) {
if ActiveRadarrBlock::CollectionDetails == *self.active_radarr_block {
if ActiveRadarrBlock::CollectionDetails == self.active_radarr_block {
self.app.data.radarr_data.collection_movies.scroll_down()
}
}
fn handle_home(&mut self) {
if ActiveRadarrBlock::CollectionDetails == *self.active_radarr_block {
if ActiveRadarrBlock::CollectionDetails == self.active_radarr_block {
self.app.data.radarr_data.collection_movies.scroll_to_top();
}
}
fn handle_end(&mut self) {
if ActiveRadarrBlock::CollectionDetails == *self.active_radarr_block {
if ActiveRadarrBlock::CollectionDetails == self.active_radarr_block {
self
.app
.data
@@ -81,7 +81,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionDetailsHan
fn handle_left_right_action(&mut self) {}
fn handle_submit(&mut self) {
if ActiveRadarrBlock::CollectionDetails == *self.active_radarr_block {
if ActiveRadarrBlock::CollectionDetails == self.active_radarr_block {
let tmdb_id = self
.app
.data
@@ -129,13 +129,13 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionDetailsHan
}
fn handle_char_key_event(&mut self) {
if *self.active_radarr_block == ActiveRadarrBlock::CollectionDetails
&& *self.key == DEFAULT_KEYBINDINGS.edit.key
if self.active_radarr_block == ActiveRadarrBlock::CollectionDetails
&& self.key == DEFAULT_KEYBINDINGS.edit.key
{
self.app.push_navigation_stack(
(
ActiveRadarrBlock::EditCollectionPrompt,
Some(*self.active_radarr_block),
Some(self.active_radarr_block),
)
.into(),
);
@@ -50,7 +50,7 @@ mod tests {
HorizontallyScrollableText
));
CollectionDetailsHandler::with(&key, &mut app, &ActiveRadarrBlock::CollectionDetails, &None)
CollectionDetailsHandler::with(key, &mut app, ActiveRadarrBlock::CollectionDetails, None)
.handle();
assert_str_eq!(
@@ -64,7 +64,7 @@ mod tests {
"Test 1"
);
CollectionDetailsHandler::with(&key, &mut app, &ActiveRadarrBlock::CollectionDetails, &None)
CollectionDetailsHandler::with(key, &mut app, ActiveRadarrBlock::CollectionDetails, None)
.handle();
assert_str_eq!(
@@ -110,10 +110,10 @@ mod tests {
));
CollectionDetailsHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
@@ -129,10 +129,10 @@ mod tests {
);
CollectionDetailsHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
@@ -179,16 +179,16 @@ mod tests {
.set_index(ADD_MOVIE_SELECTION_BLOCKS.len() - 1);
CollectionDetailsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&(
(
ActiveRadarrBlock::AddMoviePrompt,
Some(ActiveRadarrBlock::CollectionDetails)
)
@@ -205,7 +205,7 @@ mod tests {
.is_empty());
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::AddMovieSelectRootFolder
ActiveRadarrBlock::AddMovieSelectRootFolder
);
assert!(!app
.data
@@ -250,16 +250,16 @@ mod tests {
.set_items(vec![CollectionMovie::default()]);
CollectionDetailsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::CollectionDetails.into()
ActiveRadarrBlock::CollectionDetails.into()
);
assert!(app.data.radarr_data.add_movie_modal.is_none());
}
@@ -279,16 +279,16 @@ mod tests {
.set_items(vec![Movie::default()]);
CollectionDetailsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::ViewMovieOverview.into()
ActiveRadarrBlock::ViewMovieOverview.into()
);
}
}
@@ -313,16 +313,16 @@ mod tests {
.set_items(vec![CollectionMovie::default()]);
CollectionDetailsHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(app.data.radarr_data.collection_movies.items.is_empty());
}
@@ -334,16 +334,16 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::ViewMovieOverview.into());
CollectionDetailsHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::ViewMovieOverview,
&None,
ActiveRadarrBlock::ViewMovieOverview,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::CollectionDetails.into()
ActiveRadarrBlock::CollectionDetails.into()
);
}
}
@@ -388,16 +388,16 @@ mod tests {
app.data.radarr_data = radarr_data;
CollectionDetailsHandler::with(
&DEFAULT_KEYBINDINGS.edit.key,
DEFAULT_KEYBINDINGS.edit.key,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::CollectionDetails.into()
ActiveRadarrBlock::CollectionDetails.into()
);
assert!(app.data.radarr_data.edit_collection_modal.is_none());
}
@@ -407,9 +407,9 @@ mod tests {
fn test_collection_details_handler_accepts() {
ActiveRadarrBlock::iter().for_each(|active_radarr_block| {
if COLLECTION_DETAILS_BLOCKS.contains(&active_radarr_block) {
assert!(CollectionDetailsHandler::accepts(&active_radarr_block));
assert!(CollectionDetailsHandler::accepts(active_radarr_block));
} else {
assert!(!CollectionDetailsHandler::accepts(&active_radarr_block));
assert!(!CollectionDetailsHandler::accepts(active_radarr_block));
}
});
}
@@ -420,10 +420,10 @@ mod tests {
app.is_loading = true;
let handler = CollectionDetailsHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
);
assert!(!handler.is_ready());
@@ -435,10 +435,10 @@ mod tests {
app.is_loading = false;
let handler = CollectionDetailsHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
);
assert!(!handler.is_ready());
@@ -455,10 +455,10 @@ mod tests {
.set_items(vec![CollectionMovie::default()]);
let handler = CollectionDetailsHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::CollectionDetails,
&None,
ActiveRadarrBlock::CollectionDetails,
None,
);
assert!(handler.is_ready());
@@ -60,7 +60,7 @@ mod tests {
HorizontallyScrollableText
));
CollectionsHandler::with(&key, &mut app, &ActiveRadarrBlock::Collections, &None).handle();
CollectionsHandler::with(key, &mut app, ActiveRadarrBlock::Collections, None).handle();
assert_str_eq!(
app
@@ -73,7 +73,7 @@ mod tests {
"Test 1"
);
CollectionsHandler::with(&key, &mut app, &ActiveRadarrBlock::Collections, &None).handle();
CollectionsHandler::with(key, &mut app, ActiveRadarrBlock::Collections, None).handle();
assert_str_eq!(
app
@@ -98,10 +98,10 @@ mod tests {
if key == Key::Up {
for i in (0..collection_field_vec.len()).rev() {
CollectionsHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::CollectionsSortPrompt,
&None,
ActiveRadarrBlock::CollectionsSortPrompt,
None,
)
.handle();
@@ -120,10 +120,10 @@ mod tests {
} else {
for i in 0..collection_field_vec.len() {
CollectionsHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::CollectionsSortPrompt,
&None,
ActiveRadarrBlock::CollectionsSortPrompt,
None,
)
.handle();
@@ -175,10 +175,10 @@ mod tests {
));
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
@@ -194,10 +194,10 @@ mod tests {
);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
@@ -224,10 +224,10 @@ mod tests {
app.data.radarr_data.collections.search = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -245,10 +245,10 @@ mod tests {
);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -277,10 +277,10 @@ mod tests {
app.data.radarr_data.collections.filter = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -298,10 +298,10 @@ mod tests {
);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -326,10 +326,10 @@ mod tests {
app.data.radarr_data.collections.sorting(sort_options());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::CollectionsSortPrompt,
&None,
ActiveRadarrBlock::CollectionsSortPrompt,
None,
)
.handle();
@@ -346,10 +346,10 @@ mod tests {
);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::CollectionsSortPrompt,
&None,
ActiveRadarrBlock::CollectionsSortPrompt,
None,
)
.handle();
@@ -380,18 +380,18 @@ mod tests {
app.data.radarr_data.main_tabs.set_index(1);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.left.key,
DEFAULT_KEYBINDINGS.left.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.data.radarr_data.main_tabs.get_active_route(),
&ActiveRadarrBlock::Movies.into()
ActiveRadarrBlock::Movies.into()
);
assert_eq!(app.get_current_route(), &ActiveRadarrBlock::Movies.into());
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Movies.into());
}
#[rstest]
@@ -401,21 +401,18 @@ mod tests {
app.data.radarr_data.main_tabs.set_index(1);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.right.key,
DEFAULT_KEYBINDINGS.right.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.data.radarr_data.main_tabs.get_active_route(),
&ActiveRadarrBlock::Downloads.into()
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Downloads.into()
ActiveRadarrBlock::Downloads.into()
);
assert_eq!(app.get_current_route(), ActiveRadarrBlock::Downloads.into());
}
#[rstest]
@@ -425,20 +422,20 @@ mod tests {
let mut app = App::default();
CollectionsHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::UpdateAllCollectionsPrompt,
&None,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
None,
)
.handle();
assert!(app.data.radarr_data.prompt_confirm);
CollectionsHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::UpdateAllCollectionsPrompt,
&None,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
None,
)
.handle();
@@ -451,10 +448,10 @@ mod tests {
app.data.radarr_data.collections.search = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.left.key,
DEFAULT_KEYBINDINGS.left.key,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -472,10 +469,10 @@ mod tests {
);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.right.key,
DEFAULT_KEYBINDINGS.right.key,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -499,10 +496,10 @@ mod tests {
app.data.radarr_data.collections.filter = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.left.key,
DEFAULT_KEYBINDINGS.left.key,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -520,10 +517,10 @@ mod tests {
);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.right.key,
DEFAULT_KEYBINDINGS.right.key,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -560,17 +557,11 @@ mod tests {
.collections
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
)
.handle();
CollectionsHandler::with(SUBMIT_KEY, &mut app, ActiveRadarrBlock::Collections, None).handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::CollectionDetails.into()
ActiveRadarrBlock::CollectionDetails.into()
);
}
@@ -585,17 +576,11 @@ mod tests {
.collections
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
)
.handle();
CollectionsHandler::with(SUBMIT_KEY, &mut app, ActiveRadarrBlock::Collections, None).handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -615,10 +600,10 @@ mod tests {
app.data.radarr_data.collections.search = Some("Test 2".into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -634,7 +619,7 @@ mod tests {
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -654,10 +639,10 @@ mod tests {
app.data.radarr_data.collections.search = Some("Test 5".into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -673,7 +658,7 @@ mod tests {
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::SearchCollectionError.into()
ActiveRadarrBlock::SearchCollectionError.into()
);
}
@@ -693,10 +678,10 @@ mod tests {
app.data.radarr_data.collections.search = Some("Test 2".into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -712,7 +697,7 @@ mod tests {
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -732,10 +717,10 @@ mod tests {
app.data.radarr_data.collections.filter = Some("Test".into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -764,7 +749,7 @@ mod tests {
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -784,10 +769,10 @@ mod tests {
app.data.radarr_data.collections.filter = Some("Test 5".into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -795,7 +780,7 @@ mod tests {
assert!(app.data.radarr_data.collections.filtered_items.is_none());
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::FilterCollectionsError.into()
ActiveRadarrBlock::FilterCollectionsError.into()
);
}
@@ -812,10 +797,10 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::UpdateAllCollectionsPrompt.into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::UpdateAllCollectionsPrompt,
&None,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
None,
)
.handle();
@@ -826,7 +811,7 @@ mod tests {
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -842,10 +827,10 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::UpdateAllCollectionsPrompt.into());
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::UpdateAllCollectionsPrompt,
&None,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
None,
)
.handle();
@@ -853,7 +838,7 @@ mod tests {
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -875,16 +860,16 @@ mod tests {
expected_vec.reverse();
CollectionsHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::CollectionsSortPrompt,
&None,
ActiveRadarrBlock::CollectionsSortPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert_eq!(app.data.radarr_data.collections.items, expected_vec);
}
@@ -916,11 +901,11 @@ mod tests {
app.data.radarr_data = create_test_radarr_data();
app.data.radarr_data.collections.search = Some("Test".into());
CollectionsHandler::with(&ESC_KEY, &mut app, &active_radarr_block, &None).handle();
CollectionsHandler::with(ESC_KEY, &mut app, active_radarr_block, None).handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(!app.should_ignore_quit_key);
assert_eq!(app.data.radarr_data.collections.search, None);
@@ -946,11 +931,11 @@ mod tests {
..StatefulTable::default()
};
CollectionsHandler::with(&ESC_KEY, &mut app, &active_radarr_block, &None).handle();
CollectionsHandler::with(ESC_KEY, &mut app, active_radarr_block, None).handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(!app.should_ignore_quit_key);
assert_eq!(app.data.radarr_data.collections.filter, None);
@@ -966,16 +951,16 @@ mod tests {
app.data.radarr_data.prompt_confirm = true;
CollectionsHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::UpdateAllCollectionsPrompt,
&None,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(!app.data.radarr_data.prompt_confirm);
}
@@ -987,16 +972,16 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::CollectionsSortPrompt.into());
CollectionsHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::CollectionsSortPrompt,
&None,
ActiveRadarrBlock::CollectionsSortPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -1016,11 +1001,11 @@ mod tests {
..StatefulTable::default()
};
CollectionsHandler::with(&ESC_KEY, &mut app, &ActiveRadarrBlock::Collections, &None).handle();
CollectionsHandler::with(ESC_KEY, &mut app, ActiveRadarrBlock::Collections, None).handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(app.error.text.is_empty());
assert_eq!(app.data.radarr_data.collections.search, None);
@@ -1055,16 +1040,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.search.key,
DEFAULT_KEYBINDINGS.search.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::SearchCollection.into()
ActiveRadarrBlock::SearchCollection.into()
);
assert!(app.should_ignore_quit_key);
assert_eq!(
@@ -1085,16 +1070,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.search.key,
DEFAULT_KEYBINDINGS.search.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(!app.should_ignore_quit_key);
assert_eq!(app.data.radarr_data.collections.search, None);
@@ -1110,16 +1095,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.filter.key,
DEFAULT_KEYBINDINGS.filter.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::FilterCollections.into()
ActiveRadarrBlock::FilterCollections.into()
);
assert!(app.should_ignore_quit_key);
assert!(app.data.radarr_data.collections.filter.is_some());
@@ -1137,16 +1122,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.filter.key,
DEFAULT_KEYBINDINGS.filter.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(!app.should_ignore_quit_key);
assert!(app.data.radarr_data.collections.filter.is_none());
@@ -1166,16 +1151,16 @@ mod tests {
app.data.radarr_data.collections.filter = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.filter.key,
DEFAULT_KEYBINDINGS.filter.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::FilterCollections.into()
ActiveRadarrBlock::FilterCollections.into()
);
assert!(app.should_ignore_quit_key);
assert_eq!(
@@ -1212,16 +1197,16 @@ mod tests {
app.data.radarr_data = radarr_data;
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.edit.key,
DEFAULT_KEYBINDINGS.edit.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(app.data.radarr_data.edit_collection_modal.is_none());
}
@@ -1236,16 +1221,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.update.key,
DEFAULT_KEYBINDINGS.update.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::UpdateAllCollectionsPrompt.into()
ActiveRadarrBlock::UpdateAllCollectionsPrompt.into()
);
}
@@ -1261,16 +1246,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.update.key,
DEFAULT_KEYBINDINGS.update.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
@@ -1285,16 +1270,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.refresh.key,
DEFAULT_KEYBINDINGS.refresh.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(app.should_refresh);
}
@@ -1311,16 +1296,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.refresh.key,
DEFAULT_KEYBINDINGS.refresh.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(!app.should_refresh);
}
@@ -1336,10 +1321,10 @@ mod tests {
app.data.radarr_data.collections.search = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.backspace.key,
DEFAULT_KEYBINDINGS.backspace.key,
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -1367,10 +1352,10 @@ mod tests {
app.data.radarr_data.collections.filter = Some("Test".into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.backspace.key,
DEFAULT_KEYBINDINGS.backspace.key,
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -1398,10 +1383,10 @@ mod tests {
app.data.radarr_data.collections.search = Some(HorizontallyScrollableText::default());
CollectionsHandler::with(
&Key::Char('h'),
Key::Char('h'),
&mut app,
&ActiveRadarrBlock::SearchCollection,
&None,
ActiveRadarrBlock::SearchCollection,
None,
)
.handle();
@@ -1429,10 +1414,10 @@ mod tests {
app.data.radarr_data.collections.filter = Some(HorizontallyScrollableText::default());
CollectionsHandler::with(
&Key::Char('h'),
Key::Char('h'),
&mut app,
&ActiveRadarrBlock::FilterCollections,
&None,
ActiveRadarrBlock::FilterCollections,
None,
)
.handle();
@@ -1459,16 +1444,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.sort.key,
DEFAULT_KEYBINDINGS.sort.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::CollectionsSortPrompt.into()
ActiveRadarrBlock::CollectionsSortPrompt.into()
);
assert_eq!(
app
@@ -1496,16 +1481,16 @@ mod tests {
.set_items(vec![Collection::default()]);
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.sort.key,
DEFAULT_KEYBINDINGS.sort.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert!(app.data.radarr_data.collections.sort.is_none());
assert!(!app.data.radarr_data.collections.sort_asc);
@@ -1523,10 +1508,10 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::UpdateAllCollectionsPrompt.into());
CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.confirm.key,
DEFAULT_KEYBINDINGS.confirm.key,
&mut app,
&ActiveRadarrBlock::UpdateAllCollectionsPrompt,
&None,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
None,
)
.handle();
@@ -1537,7 +1522,7 @@ mod tests {
);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
}
@@ -1693,9 +1678,9 @@ mod tests {
ActiveRadarrBlock::iter().for_each(|active_radarr_block| {
if collections_handler_blocks.contains(&active_radarr_block) {
assert!(CollectionsHandler::accepts(&active_radarr_block));
assert!(CollectionsHandler::accepts(active_radarr_block));
} else {
assert!(!CollectionsHandler::accepts(&active_radarr_block));
assert!(!CollectionsHandler::accepts(active_radarr_block));
}
});
}
@@ -1706,10 +1691,10 @@ mod tests {
app.is_loading = true;
let handler = CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
);
assert!(!handler.is_ready());
@@ -1721,10 +1706,10 @@ mod tests {
app.is_loading = false;
let handler = CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
);
assert!(!handler.is_ready());
@@ -1741,10 +1726,10 @@ mod tests {
.set_items(vec![Collection::default()]);
let handler = CollectionsHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::Collections,
&None,
ActiveRadarrBlock::Collections,
None,
);
assert!(handler.is_ready());
@@ -12,22 +12,22 @@ use crate::{handle_text_box_keys, handle_text_box_left_right_keys};
mod edit_collection_handler_tests;
pub(super) struct EditCollectionHandler<'a, 'b> {
key: &'a Key,
key: Key,
app: &'a mut App<'b>,
active_radarr_block: &'a ActiveRadarrBlock,
context: &'a Option<ActiveRadarrBlock>,
active_radarr_block: ActiveRadarrBlock,
context: Option<ActiveRadarrBlock>,
}
impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandler<'a, 'b> {
fn accepts(active_block: &'a ActiveRadarrBlock) -> bool {
EDIT_COLLECTION_BLOCKS.contains(active_block)
fn accepts(active_block: ActiveRadarrBlock) -> bool {
EDIT_COLLECTION_BLOCKS.contains(&active_block)
}
fn with(
key: &'a Key,
key: Key,
app: &'a mut App<'b>,
active_block: &'a ActiveRadarrBlock,
context: &'a Option<ActiveRadarrBlock>,
active_block: ActiveRadarrBlock,
context: Option<ActiveRadarrBlock>,
) -> EditCollectionHandler<'a, 'b> {
EditCollectionHandler {
key,
@@ -37,7 +37,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandle
}
}
fn get_key(&self) -> &Key {
fn get_key(&self) -> Key {
self.key
}
@@ -203,8 +203,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandle
| ActiveRadarrBlock::EditCollectionSelectQualityProfile => {
self.app.push_navigation_stack(
(
*self.app.data.radarr_data.selected_block.get_active_block(),
*self.context,
self.app.data.radarr_data.selected_block.get_active_block(),
self.context,
)
.into(),
)
@@ -212,8 +212,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandle
ActiveRadarrBlock::EditCollectionRootFolderPathInput => {
self.app.push_navigation_stack(
(
*self.app.data.radarr_data.selected_block.get_active_block(),
*self.context,
self.app.data.radarr_data.selected_block.get_active_block(),
self.context,
)
.into(),
);
@@ -308,8 +308,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for EditCollectionHandle
}
ActiveRadarrBlock::EditCollectionPrompt => {
if self.app.data.radarr_data.selected_block.get_active_block()
== &ActiveRadarrBlock::EditCollectionConfirmPrompt
&& *key == DEFAULT_KEYBINDINGS.confirm.key
== ActiveRadarrBlock::EditCollectionConfirmPrompt
&& key == DEFAULT_KEYBINDINGS.confirm.key
{
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::EditCollection(None));
@@ -44,10 +44,10 @@ mod tests {
if key == Key::Up {
for i in (0..minimum_availability_vec.len()).rev() {
EditCollectionHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
&None,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
None,
)
.handle();
@@ -66,10 +66,10 @@ mod tests {
} else {
for i in 0..minimum_availability_vec.len() {
EditCollectionHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
&None,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
None,
)
.handle();
@@ -104,10 +104,10 @@ mod tests {
.set_items(vec!["Test 1".to_owned(), "Test 2".to_owned()]);
EditCollectionHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectQualityProfile,
&None,
ActiveRadarrBlock::EditCollectionSelectQualityProfile,
None,
)
.handle();
@@ -124,10 +124,10 @@ mod tests {
);
EditCollectionHandler::with(
&key,
key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectQualityProfile,
&None,
ActiveRadarrBlock::EditCollectionSelectQualityProfile,
None,
)
.handle();
@@ -152,23 +152,18 @@ mod tests {
BlockSelectionState::new(&EDIT_COLLECTION_SELECTION_BLOCKS);
app.data.radarr_data.selected_block.next();
EditCollectionHandler::with(
&key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
)
.handle();
EditCollectionHandler::with(key, &mut app, ActiveRadarrBlock::EditCollectionPrompt, None)
.handle();
if key == Key::Up {
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::EditCollectionToggleMonitored
ActiveRadarrBlock::EditCollectionToggleMonitored
);
} else {
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::EditCollectionSelectQualityProfile
ActiveRadarrBlock::EditCollectionSelectQualityProfile
);
}
}
@@ -184,17 +179,12 @@ mod tests {
BlockSelectionState::new(&EDIT_COLLECTION_SELECTION_BLOCKS);
app.data.radarr_data.selected_block.next();
EditCollectionHandler::with(
&key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
)
.handle();
EditCollectionHandler::with(key, &mut app, ActiveRadarrBlock::EditCollectionPrompt, None)
.handle();
assert_eq!(
app.data.radarr_data.selected_block.get_active_block(),
&ActiveRadarrBlock::EditCollectionSelectMinimumAvailability
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability
);
}
}
@@ -224,10 +214,10 @@ mod tests {
.set_items(minimum_availability_vec.clone());
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
&None,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
None,
)
.handle();
@@ -244,10 +234,10 @@ mod tests {
);
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
&None,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability,
None,
)
.handle();
@@ -282,10 +272,10 @@ mod tests {
]);
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectQualityProfile,
&None,
ActiveRadarrBlock::EditCollectionSelectQualityProfile,
None,
)
.handle();
@@ -302,10 +292,10 @@ mod tests {
);
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::EditCollectionSelectQualityProfile,
&None,
ActiveRadarrBlock::EditCollectionSelectQualityProfile,
None,
)
.handle();
@@ -331,10 +321,10 @@ mod tests {
});
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.home.key,
DEFAULT_KEYBINDINGS.home.key,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -352,10 +342,10 @@ mod tests {
);
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.end.key,
DEFAULT_KEYBINDINGS.end.key,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -386,23 +376,13 @@ mod tests {
fn test_left_right_prompt_toggle(#[values(Key::Left, Key::Right)] key: Key) {
let mut app = App::default();
EditCollectionHandler::with(
&key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
)
.handle();
EditCollectionHandler::with(key, &mut app, ActiveRadarrBlock::EditCollectionPrompt, None)
.handle();
assert!(app.data.radarr_data.prompt_confirm);
EditCollectionHandler::with(
&key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
)
.handle();
EditCollectionHandler::with(key, &mut app, ActiveRadarrBlock::EditCollectionPrompt, None)
.handle();
assert!(!app.data.radarr_data.prompt_confirm);
}
@@ -416,10 +396,10 @@ mod tests {
});
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.left.key,
DEFAULT_KEYBINDINGS.left.key,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -437,10 +417,10 @@ mod tests {
);
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.right.key,
DEFAULT_KEYBINDINGS.right.key,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -484,10 +464,10 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::EditCollectionRootFolderPathInput.into());
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -503,7 +483,7 @@ mod tests {
.is_empty());
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::EditCollectionPrompt.into()
ActiveRadarrBlock::EditCollectionPrompt.into()
);
}
@@ -522,16 +502,16 @@ mod tests {
.set_index(EDIT_COLLECTION_SELECTION_BLOCKS.len() - 1);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
}
@@ -552,16 +532,16 @@ mod tests {
.set_index(EDIT_COLLECTION_SELECTION_BLOCKS.len() - 1);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
@@ -587,16 +567,16 @@ mod tests {
.set_index(EDIT_COLLECTION_SELECTION_BLOCKS.len() - 1);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::EditCollectionPrompt.into()
ActiveRadarrBlock::EditCollectionPrompt.into()
);
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
assert!(!app.should_refresh);
@@ -615,14 +595,14 @@ mod tests {
app.push_navigation_stack(current_route);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&Some(ActiveRadarrBlock::Collections),
ActiveRadarrBlock::EditCollectionPrompt,
Some(ActiveRadarrBlock::Collections),
)
.handle();
assert_eq!(app.get_current_route(), &current_route);
assert_eq!(app.get_current_route(), current_route);
assert_eq!(
app
.data
@@ -635,14 +615,14 @@ mod tests {
);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&Some(ActiveRadarrBlock::Collections),
ActiveRadarrBlock::EditCollectionPrompt,
Some(ActiveRadarrBlock::Collections),
)
.handle();
assert_eq!(app.get_current_route(), &current_route);
assert_eq!(app.get_current_route(), current_route);
assert_eq!(
app
.data
@@ -673,14 +653,14 @@ mod tests {
app.push_navigation_stack(current_route);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&Some(ActiveRadarrBlock::Collections),
ActiveRadarrBlock::EditCollectionPrompt,
Some(ActiveRadarrBlock::Collections),
)
.handle();
assert_eq!(app.get_current_route(), &current_route);
assert_eq!(app.get_current_route(), current_route);
assert_eq!(
app
.data
@@ -693,14 +673,14 @@ mod tests {
);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&Some(ActiveRadarrBlock::Collections),
ActiveRadarrBlock::EditCollectionPrompt,
Some(ActiveRadarrBlock::Collections),
)
.handle();
assert_eq!(app.get_current_route(), &current_route);
assert_eq!(app.get_current_route(), current_route);
assert_eq!(
app
.data
@@ -735,16 +715,16 @@ mod tests {
app.data.radarr_data.selected_block.set_index(index);
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&Some(ActiveRadarrBlock::Collections),
ActiveRadarrBlock::EditCollectionPrompt,
Some(ActiveRadarrBlock::Collections),
)
.handle();
assert_eq!(
app.get_current_route(),
&(selected_block, Some(ActiveRadarrBlock::Collections)).into()
(selected_block, Some(ActiveRadarrBlock::Collections)).into()
);
assert_eq!(app.data.radarr_data.prompt_confirm_action, None);
@@ -768,16 +748,16 @@ mod tests {
app.push_navigation_stack(active_radarr_block.into());
EditCollectionHandler::with(
&SUBMIT_KEY,
SUBMIT_KEY,
&mut app,
&active_radarr_block,
&Some(ActiveRadarrBlock::Collections),
active_radarr_block,
Some(ActiveRadarrBlock::Collections),
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::EditCollectionPrompt.into()
ActiveRadarrBlock::EditCollectionPrompt.into()
);
if active_radarr_block == ActiveRadarrBlock::EditCollectionRootFolderPathInput {
@@ -806,17 +786,17 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::EditCollectionRootFolderPathInput.into());
EditCollectionHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
assert!(!app.should_ignore_quit_key);
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::EditCollectionPrompt.into()
ActiveRadarrBlock::EditCollectionPrompt.into()
);
}
@@ -828,16 +808,16 @@ mod tests {
app.data.radarr_data = create_test_radarr_data();
EditCollectionHandler::with(
&ESC_KEY,
ESC_KEY,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
let radarr_data = &app.data.radarr_data;
@@ -860,11 +840,11 @@ mod tests {
app.push_navigation_stack(ActiveRadarrBlock::Collections.into());
app.push_navigation_stack(active_radarr_block.into());
EditCollectionHandler::with(&ESC_KEY, &mut app, &active_radarr_block, &None).handle();
EditCollectionHandler::with(ESC_KEY, &mut app, active_radarr_block, None).handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
}
}
@@ -890,10 +870,10 @@ mod tests {
});
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.backspace.key,
DEFAULT_KEYBINDINGS.backspace.key,
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -916,10 +896,10 @@ mod tests {
app.data.radarr_data.edit_collection_modal = Some(EditCollectionModal::default());
EditCollectionHandler::with(
&Key::Char('h'),
Key::Char('h'),
&mut app,
&ActiveRadarrBlock::EditCollectionRootFolderPathInput,
&None,
ActiveRadarrBlock::EditCollectionRootFolderPathInput,
None,
)
.handle();
@@ -951,16 +931,16 @@ mod tests {
.set_index(EDIT_COLLECTION_SELECTION_BLOCKS.len() - 1);
EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.confirm.key,
DEFAULT_KEYBINDINGS.confirm.key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
)
.handle();
assert_eq!(
app.get_current_route(),
&ActiveRadarrBlock::Collections.into()
ActiveRadarrBlock::Collections.into()
);
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
@@ -974,9 +954,9 @@ mod tests {
fn test_edit_collection_handler_accepts() {
ActiveRadarrBlock::iter().for_each(|active_radarr_block| {
if EDIT_COLLECTION_BLOCKS.contains(&active_radarr_block) {
assert!(EditCollectionHandler::accepts(&active_radarr_block));
assert!(EditCollectionHandler::accepts(active_radarr_block));
} else {
assert!(!EditCollectionHandler::accepts(&active_radarr_block));
assert!(!EditCollectionHandler::accepts(active_radarr_block));
}
});
}
@@ -987,10 +967,10 @@ mod tests {
app.is_loading = true;
let handler = EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
);
assert!(!handler.is_ready());
@@ -1002,10 +982,10 @@ mod tests {
app.is_loading = false;
let handler = EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
);
assert!(!handler.is_ready());
@@ -1018,10 +998,10 @@ mod tests {
app.data.radarr_data.edit_collection_modal = Some(EditCollectionModal::default());
let handler = EditCollectionHandler::with(
&DEFAULT_KEYBINDINGS.esc.key,
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
&ActiveRadarrBlock::EditCollectionPrompt,
&None,
ActiveRadarrBlock::EditCollectionPrompt,
None,
);
assert!(handler.is_ready());
+16 -16
View File
@@ -22,10 +22,10 @@ mod edit_collection_handler;
mod collections_handler_tests;
pub(super) struct CollectionsHandler<'a, 'b> {
key: &'a Key,
key: Key,
app: &'a mut App<'b>,
active_radarr_block: &'a ActiveRadarrBlock,
context: &'a Option<ActiveRadarrBlock>,
active_radarr_block: ActiveRadarrBlock,
context: Option<ActiveRadarrBlock>,
}
impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'a, 'b> {
@@ -43,17 +43,17 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
}
}
fn accepts(active_block: &'a ActiveRadarrBlock) -> bool {
fn accepts(active_block: ActiveRadarrBlock) -> bool {
CollectionDetailsHandler::accepts(active_block)
|| EditCollectionHandler::accepts(active_block)
|| COLLECTIONS_BLOCKS.contains(active_block)
|| COLLECTIONS_BLOCKS.contains(&active_block)
}
fn with(
key: &'a Key,
key: Key,
app: &'a mut App<'b>,
active_block: &'a ActiveRadarrBlock,
context: &'a Option<ActiveRadarrBlock>,
active_block: ActiveRadarrBlock,
context: Option<ActiveRadarrBlock>,
) -> CollectionsHandler<'a, 'b> {
CollectionsHandler {
key,
@@ -63,7 +63,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
}
}
fn get_key(&self) -> &Key {
fn get_key(&self) -> Key {
self.key
}
@@ -306,7 +306,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
let key = self.key;
match self.active_radarr_block {
ActiveRadarrBlock::Collections => match self.key {
_ if *key == DEFAULT_KEYBINDINGS.search.key => {
_ if key == DEFAULT_KEYBINDINGS.search.key => {
self
.app
.push_navigation_stack(ActiveRadarrBlock::SearchCollection.into());
@@ -314,7 +314,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
Some(HorizontallyScrollableText::default());
self.app.should_ignore_quit_key = true;
}
_ if *key == DEFAULT_KEYBINDINGS.filter.key => {
_ if key == DEFAULT_KEYBINDINGS.filter.key => {
self
.app
.push_navigation_stack(ActiveRadarrBlock::FilterCollections.into());
@@ -323,7 +323,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
Some(HorizontallyScrollableText::default());
self.app.should_ignore_quit_key = true;
}
_ if *key == DEFAULT_KEYBINDINGS.edit.key => {
_ if key == DEFAULT_KEYBINDINGS.edit.key => {
self.app.push_navigation_stack(
(
ActiveRadarrBlock::EditCollectionPrompt,
@@ -336,15 +336,15 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
self.app.data.radarr_data.selected_block =
BlockSelectionState::new(&EDIT_COLLECTION_SELECTION_BLOCKS);
}
_ if *key == DEFAULT_KEYBINDINGS.update.key => {
_ if key == DEFAULT_KEYBINDINGS.update.key => {
self
.app
.push_navigation_stack(ActiveRadarrBlock::UpdateAllCollectionsPrompt.into());
}
_ if *key == DEFAULT_KEYBINDINGS.refresh.key => {
_ if key == DEFAULT_KEYBINDINGS.refresh.key => {
self.app.should_refresh = true;
}
_ if *key == DEFAULT_KEYBINDINGS.sort.key => {
_ if key == DEFAULT_KEYBINDINGS.sort.key => {
self
.app
.data
@@ -386,7 +386,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for CollectionsHandler<'
)
}
ActiveRadarrBlock::UpdateAllCollectionsPrompt => {
if *key == DEFAULT_KEYBINDINGS.confirm.key {
if key == DEFAULT_KEYBINDINGS.confirm.key {
self.app.data.radarr_data.prompt_confirm = true;
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::UpdateCollections);