fix: AddRootFolderBody now constructed prior to AddRootFolder event being sent down the network channel

This commit is contained in:
2024-12-17 14:53:40 -07:00
parent 1f81061152
commit 1d1e42aeb1
7 changed files with 59 additions and 76 deletions
@@ -5,7 +5,7 @@ use crate::handlers::radarr_handlers::handle_change_tab_left_right_keys;
use crate::handlers::table_handler::TableHandlingConfig;
use crate::handlers::{handle_clear_errors, handle_prompt_toggle, KeyEventHandler};
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ROOT_FOLDERS_BLOCKS};
use crate::models::servarr_models::RootFolder;
use crate::models::servarr_models::{AddRootFolderBody, RootFolder};
use crate::models::HorizontallyScrollableText;
use crate::network::radarr_network::RadarrEvent;
use crate::{handle_table_events, handle_text_box_keys, handle_text_box_left_right_keys};
@@ -28,6 +28,21 @@ impl<'a, 'b> RootFoldersHandler<'a, 'b> {
self.app.data.radarr_data.root_folders,
RootFolder
);
fn build_add_root_folder_body(&mut self) -> AddRootFolderBody {
let path = self.app
.data
.radarr_data
.edit_root_folder
.as_ref()
.unwrap()
.text
.clone();
self.app.data.radarr_data.edit_root_folder = None;
AddRootFolderBody { path }
}
}
impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for RootFoldersHandler<'a, 'b> {
@@ -140,7 +155,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for RootFoldersHandler<'
.text
.is_empty() =>
{
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddRootFolder(None));
self.app.data.radarr_data.prompt_confirm_action = Some(RadarrEvent::AddRootFolder(self.build_add_root_folder_body()));
self.app.data.radarr_data.prompt_confirm = true;
self.app.should_ignore_quit_key = false;
self.app.pop_navigation_stack();
@@ -8,7 +8,7 @@ mod tests {
use crate::handlers::radarr_handlers::root_folders::RootFoldersHandler;
use crate::handlers::KeyEventHandler;
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ROOT_FOLDERS_BLOCKS};
use crate::models::servarr_models::RootFolder;
use crate::models::servarr_models::{AddRootFolderBody, RootFolder};
use crate::models::HorizontallyScrollableText;
mod test_handle_home_end {
@@ -250,6 +250,7 @@ mod tests {
#[test]
fn test_add_root_folder_prompt_confirm_submit() {
let mut app = App::default();
let expected_add_root_folder_body = AddRootFolderBody { path: "Test".to_owned() };
app
.data
.radarr_data
@@ -273,7 +274,7 @@ mod tests {
assert!(!app.should_ignore_quit_key);
assert_eq!(
app.data.radarr_data.prompt_confirm_action,
Some(RadarrEvent::AddRootFolder(None))
Some(RadarrEvent::AddRootFolder(expected_add_root_folder_body))
);
assert_eq!(
app.get_current_route(),
@@ -638,6 +639,27 @@ mod tests {
}
})
}
#[test]
fn test_build_add_root_folder_body() {
let mut app = App::default();
app.data.radarr_data.edit_root_folder = Some("/nfs/test".into());
let expected_add_root_folder_body = AddRootFolderBody { path: "/nfs/test".to_owned() };
let actual_add_root_folder_body = RootFoldersHandler::with(
DEFAULT_KEYBINDINGS.esc.key,
&mut app,
ActiveRadarrBlock::RootFolders,
None,
).build_add_root_folder_body();
assert_eq!(actual_add_root_folder_body, expected_add_root_folder_body);
assert!(app
.data
.radarr_data
.edit_root_folder
.is_none());
}
#[test]
fn test_root_folders_handler_not_ready_when_loading() {