use super::*;use serde_json::json; #[test]fn test_find_binding_prefers_exact_match_over_parameterized() { let keymap: KeymapFile = serde_json::from_value(json!([ { "bindings": { "ctrl-tab": "agents_sidebar::ToggleThreadSwitcher", "ctrl-shift-tab": ["agents_sidebar::ToggleThreadSwitcher", { "select_last": true }] } } ])) .unwrap(); let binding = find_binding_in_keymap(&keymap, "agents_sidebar::ToggleThreadSwitcher"); assert_eq!(binding.as_deref(), Some("ctrl-tab"));} #[test]fn test_find_binding_falls_back_to_parameterized_match() { let keymap: KeymapFile = serde_json::from_value(json!([ { "bindings": { "ctrl-shift-tab": ["agents_sidebar::ToggleThreadSwitcher", { "select_last": true }] } } ])) .unwrap(); let binding = find_binding_in_keymap(&keymap, "agents_sidebar::ToggleThreadSwitcher"); assert_eq!(binding.as_deref(), Some("ctrl-shift-tab"));} #[test]fn test_find_binding_prefers_exact_match_regardless_of_order() { let keymap: KeymapFile = serde_json::from_value(json!([ { "bindings": { "ctrl-shift-tab": ["agents_sidebar::ToggleThreadSwitcher", { "select_last": true }], "ctrl-tab": "agents_sidebar::ToggleThreadSwitcher" } } ])) .unwrap(); let binding = find_binding_in_keymap(&keymap, "agents_sidebar::ToggleThreadSwitcher"); assert_eq!(binding.as_deref(), Some("ctrl-tab"));} #[test]fn test_find_binding_later_section_overrides_earlier() { let keymap: KeymapFile = serde_json::from_value(json!([ { "bindings": { "ctrl-a": "some::Action" } }, { "bindings": { "ctrl-b": "some::Action" } } ])) .unwrap(); let binding = find_binding_in_keymap(&keymap, "some::Action"); assert_eq!(binding.as_deref(), Some("ctrl-b"));}
use super::*;
use serde_json::json;
#[test]
fn test_find_binding_prefers_exact_match_over_parameterized() {
let keymap: KeymapFile = serde_json::from_value(json!([
{
"bindings": {
"ctrl-tab": "agents_sidebar::ToggleThreadSwitcher",
"ctrl-shift-tab": ["agents_sidebar::ToggleThreadSwitcher", { "select_last": true }]
}
}
]))
.unwrap();
let binding = find_binding_in_keymap(&keymap, "agents_sidebar::ToggleThreadSwitcher");
assert_eq!(binding.as_deref(), Some("ctrl-tab"));
}
#[test]
fn test_find_binding_falls_back_to_parameterized_match() {
let keymap: KeymapFile = serde_json::from_value(json!([
{
"bindings": {
"ctrl-shift-tab": ["agents_sidebar::ToggleThreadSwitcher", { "select_last": true }]
}
}
]))
.unwrap();
let binding = find_binding_in_keymap(&keymap, "agents_sidebar::ToggleThreadSwitcher");
assert_eq!(binding.as_deref(), Some("ctrl-shift-tab"));
}
#[test]
fn test_find_binding_prefers_exact_match_regardless_of_order() {
let keymap: KeymapFile = serde_json::from_value(json!([
{
"bindings": {
"ctrl-shift-tab": ["agents_sidebar::ToggleThreadSwitcher", { "select_last": true }],
"ctrl-tab": "agents_sidebar::ToggleThreadSwitcher"
}
}
]))
.unwrap();
let binding = find_binding_in_keymap(&keymap, "agents_sidebar::ToggleThreadSwitcher");
assert_eq!(binding.as_deref(), Some("ctrl-tab"));
}
#[test]
fn test_find_binding_later_section_overrides_earlier() {
let keymap: KeymapFile = serde_json::from_value(json!([
{ "bindings": { "ctrl-a": "some::Action" } },
{ "bindings": { "ctrl-b": "some::Action" } }
]))
.unwrap();
let binding = find_binding_in_keymap(&keymap, "some::Action");
assert_eq!(binding.as_deref(), Some("ctrl-b"));
}