#[cfg(test)]
mod tests {
use crate::mocks::tui_input::MockTuiInput;
use eck::frontend::tui::action::EnkryptitTuiAction;
#[test]
fn test_from_str_conversion_tui_action() {
let values = ["Parameters", "Help", "Browse"];
for value in values {
if EnkryptitTuiAction::from_string(value).is_none() {
panic!(
"All EnkryptitActions should be converted correctly. This one fails : {}",
value
)
}
}
}
#[test]
fn from_str_maps_all_actions() {
let cases = [
("Parameters", "LaunchParams"),
("Help", "ShowHelp"),
("Browse", "Browse"),
];
for (input, expected) in cases {
let action = EnkryptitTuiAction::from_string(input);
assert!(action.is_some(), "Expected action for {input}");
match (expected, action.unwrap()) {
("LaunchParams", EnkryptitTuiAction::LaunchParams)
| ("ShowHelp", EnkryptitTuiAction::ShowHelp)
| ("Browse", EnkryptitTuiAction::Browse) => {}
_ => panic!("Wrong action for {input}"),
}
}
}
#[test]
fn from_str_rejects_unknown_action() {
assert!(EnkryptitTuiAction::from_string("NotAnAction").is_none());
assert!(EnkryptitTuiAction::from_string("").is_none());
assert!(EnkryptitTuiAction::from_string("Exit").is_none());
assert!(EnkryptitTuiAction::from_string("Encrypt/Decrypt file/folder").is_none());
assert!(EnkryptitTuiAction::from_string("EncryptObject").is_none());
}
#[test]
fn show_help_action_succeeds() {
let action = EnkryptitTuiAction::ShowHelp;
let input = MockTuiInput::new();
assert!(action.execute(&input).is_ok());
assert_eq!(input.pending_selects(), 0);
assert_eq!(input.pending_texts(), 0);
}
#[test]
fn launch_params_action_routes_to_params_menu() {
let action = EnkryptitTuiAction::LaunchParams;
let input = MockTuiInput::new().with_select("Back to main menu");
assert!(action.execute(&input).is_ok());
assert_eq!(
input.pending_selects(),
0,
"params menu should consume the menu choice"
);
}
#[test]
fn browse_action_routes_to_browser_menu() {
let action = EnkryptitTuiAction::Browse;
let input = MockTuiInput::new().with_select("Back to main menu");
assert!(action.execute(&input).is_ok());
assert_eq!(
input.pending_selects(),
0,
"browser should consume the menu choice"
);
}
}