fix: Updated the name of the should_ignore_quit_key to ignore_special_keys_for_textbox_input to give a better idea of what the flag is used for; also added alt keybinding for backspace
This commit is contained in:
@@ -5,44 +5,85 @@ mod test {
|
||||
|
||||
use crate::app::key_binding::{KeyBinding, DEFAULT_KEYBINDINGS};
|
||||
use crate::event::Key;
|
||||
use crate::matches_key;
|
||||
|
||||
#[rstest]
|
||||
#[case(DEFAULT_KEYBINDINGS.add, Key::Char('a'), "add")]
|
||||
#[case(DEFAULT_KEYBINDINGS.up, Key::Up, "up")]
|
||||
#[case(DEFAULT_KEYBINDINGS.down, Key::Down, "down")]
|
||||
#[case(DEFAULT_KEYBINDINGS.left, Key::Left, "left")]
|
||||
#[case(DEFAULT_KEYBINDINGS.right, Key::Right, "right")]
|
||||
#[case(DEFAULT_KEYBINDINGS.backspace, Key::Backspace, "backspace")]
|
||||
#[case(DEFAULT_KEYBINDINGS.next_servarr, Key::Tab, "next servarr")]
|
||||
#[case(DEFAULT_KEYBINDINGS.previous_servarr, Key::BackTab, "previous servarr")]
|
||||
#[case(DEFAULT_KEYBINDINGS.clear, Key::Char('c'), "clear")]
|
||||
#[case(DEFAULT_KEYBINDINGS.auto_search, Key::Char('S'), "auto search")]
|
||||
#[case(DEFAULT_KEYBINDINGS.search, Key::Char('s'), "search")]
|
||||
#[case(DEFAULT_KEYBINDINGS.settings, Key::Char('S'), "settings")]
|
||||
#[case(DEFAULT_KEYBINDINGS.filter, Key::Char('f'), "filter")]
|
||||
#[case(DEFAULT_KEYBINDINGS.sort, Key::Char('o'), "sort")]
|
||||
#[case(DEFAULT_KEYBINDINGS.edit, Key::Char('e'), "edit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.events, Key::Char('e'), "events")]
|
||||
#[case(DEFAULT_KEYBINDINGS.logs, Key::Char('L'), "logs")]
|
||||
#[case(DEFAULT_KEYBINDINGS.tasks, Key::Char('t'), "tasks")]
|
||||
#[case(DEFAULT_KEYBINDINGS.test, Key::Char('t'), "test")]
|
||||
#[case(DEFAULT_KEYBINDINGS.test_all, Key::Char('T'), "test all")]
|
||||
#[case(DEFAULT_KEYBINDINGS.toggle_monitoring, Key::Char('m'), "toggle monitoring")]
|
||||
#[case(DEFAULT_KEYBINDINGS.refresh, Key::Ctrl('r'), "refresh")]
|
||||
#[case(DEFAULT_KEYBINDINGS.update, Key::Char('u'), "update")]
|
||||
#[case(DEFAULT_KEYBINDINGS.home, Key::Home, "home")]
|
||||
#[case(DEFAULT_KEYBINDINGS.end, Key::End, "end")]
|
||||
#[case(DEFAULT_KEYBINDINGS.delete, Key::Delete, "delete")]
|
||||
#[case(DEFAULT_KEYBINDINGS.submit, Key::Enter, "submit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.confirm, Key::Ctrl('s'), "submit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.quit, Key::Char('q'), "quit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.esc, Key::Esc, "close")]
|
||||
#[case(DEFAULT_KEYBINDINGS.add, Key::Char('a'), None, "add")]
|
||||
#[case(DEFAULT_KEYBINDINGS.up, Key::Up, Some(Key::Char('k')), "up")]
|
||||
#[case(DEFAULT_KEYBINDINGS.down, Key::Down, Some(Key::Char('j')), "down")]
|
||||
#[case(DEFAULT_KEYBINDINGS.left, Key::Left, Some(Key::Char('h')), "left")]
|
||||
#[case(DEFAULT_KEYBINDINGS.right, Key::Right, Some(Key::Char('l')), "right")]
|
||||
#[case(DEFAULT_KEYBINDINGS.backspace, Key::Backspace, Some(Key::Ctrl('h')), "backspace")]
|
||||
#[case(DEFAULT_KEYBINDINGS.next_servarr, Key::Tab, None, "next servarr")]
|
||||
#[case(DEFAULT_KEYBINDINGS.previous_servarr, Key::BackTab, None, "previous servarr")]
|
||||
#[case(DEFAULT_KEYBINDINGS.clear, Key::Char('c'), None, "clear")]
|
||||
#[case(DEFAULT_KEYBINDINGS.auto_search, Key::Char('S'), None, "auto search")]
|
||||
#[case(DEFAULT_KEYBINDINGS.search, Key::Char('s'), None, "search")]
|
||||
#[case(DEFAULT_KEYBINDINGS.settings, Key::Char('S'), None, "settings")]
|
||||
#[case(DEFAULT_KEYBINDINGS.filter, Key::Char('f'), None, "filter")]
|
||||
#[case(DEFAULT_KEYBINDINGS.sort, Key::Char('o'), None, "sort")]
|
||||
#[case(DEFAULT_KEYBINDINGS.edit, Key::Char('e'), None, "edit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.events, Key::Char('e'), None, "events")]
|
||||
#[case(DEFAULT_KEYBINDINGS.logs, Key::Char('L'), None, "logs")]
|
||||
#[case(DEFAULT_KEYBINDINGS.tasks, Key::Char('t'), None, "tasks")]
|
||||
#[case(DEFAULT_KEYBINDINGS.test, Key::Char('t'), None, "test")]
|
||||
#[case(DEFAULT_KEYBINDINGS.test_all, Key::Char('T'), None, "test all")]
|
||||
#[case(DEFAULT_KEYBINDINGS.toggle_monitoring, Key::Char('m'), None, "toggle monitoring")]
|
||||
#[case(DEFAULT_KEYBINDINGS.refresh, Key::Ctrl('r'), None, "refresh")]
|
||||
#[case(DEFAULT_KEYBINDINGS.update, Key::Char('u'), None, "update")]
|
||||
#[case(DEFAULT_KEYBINDINGS.home, Key::Home, None, "home")]
|
||||
#[case(DEFAULT_KEYBINDINGS.end, Key::End, None, "end")]
|
||||
#[case(DEFAULT_KEYBINDINGS.delete, Key::Delete, None, "delete")]
|
||||
#[case(DEFAULT_KEYBINDINGS.submit, Key::Enter, None, "submit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.confirm, Key::Ctrl('s'), None, "submit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.quit, Key::Char('q'), None, "quit")]
|
||||
#[case(DEFAULT_KEYBINDINGS.esc, Key::Esc, None, "close")]
|
||||
fn test_default_key_bindings_and_descriptions(
|
||||
#[case] key_binding: KeyBinding,
|
||||
#[case] expected_key: Key,
|
||||
#[case] expected_alt_key: Option<Key>,
|
||||
#[case] expected_desc: &str,
|
||||
) {
|
||||
assert_eq!(key_binding.key, expected_key);
|
||||
assert_eq!(key_binding.alt, expected_alt_key);
|
||||
assert_str_eq!(key_binding.desc, expected_desc);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_matches_key_macro() {
|
||||
let key = Key::Char('t');
|
||||
|
||||
assert!(matches_key!(test, key));
|
||||
assert!(!matches_key!(test, Key::Char('T')));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_matches_key_macro_with_alt_keybinding() {
|
||||
let alt_key = Key::Char('k');
|
||||
let key = Key::Up;
|
||||
|
||||
assert!(matches_key!(up, key));
|
||||
assert!(matches_key!(up, alt_key));
|
||||
assert!(!matches_key!(up, Key::Char('t')));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_matches_key_macro_with_alt_keybinding_uses_alt_key_when_ignore_special_keys_is_false() {
|
||||
let alt_key = Key::Char('k');
|
||||
let key = Key::Up;
|
||||
|
||||
assert!(matches_key!(up, key, false));
|
||||
assert!(matches_key!(up, alt_key, false));
|
||||
assert!(!matches_key!(up, Key::Char('t'), false));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_matches_key_macro_with_alt_keybinding_ignores_alt_key_when_ignore_special_keys_is_true() {
|
||||
let alt_key = Key::Char('k');
|
||||
let key = Key::Up;
|
||||
|
||||
assert!(matches_key!(up, key, true));
|
||||
assert!(!matches_key!(up, alt_key, true));
|
||||
assert!(!matches_key!(up, Key::Char('t'), true));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user