Skip to content

Commit a4c9a90

Browse files
committed
test(core): cover exact react lsp server routing
1 parent d7e7b0b commit a4c9a90

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

crates/mcpls-core/src/bridge/translator.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3243,6 +3243,40 @@ mod tests {
32433243
assert_eq!(client.language_id(), "typescript");
32443244
}
32453245

3246+
#[test]
3247+
fn test_get_client_for_file_prefers_exact_react_server() {
3248+
let temp_dir = TempDir::new().unwrap();
3249+
let test_file = temp_dir.path().join("component.tsx");
3250+
fs::write(&test_file, "export const Component = () => <div />").unwrap();
3251+
3252+
let mut extension_map = HashMap::new();
3253+
extension_map.insert("tsx".to_string(), "typescriptreact".to_string());
3254+
3255+
let typescript_react_config = crate::config::LspServerConfig {
3256+
language_id: "typescriptreact".to_string(),
3257+
command: "typescript-language-server".to_string(),
3258+
args: vec!["--stdio".to_string()],
3259+
env: HashMap::new(),
3260+
file_patterns: vec!["**/*.tsx".to_string()],
3261+
initialization_options: None,
3262+
timeout_seconds: 30,
3263+
heuristics: None,
3264+
};
3265+
3266+
let mut translator = Translator::new().with_extensions(extension_map);
3267+
translator.register_client(
3268+
"typescript".to_string(),
3269+
LspClient::new(crate::config::LspServerConfig::typescript()),
3270+
);
3271+
translator.register_client(
3272+
"typescriptreact".to_string(),
3273+
LspClient::new(typescript_react_config),
3274+
);
3275+
3276+
let client = translator.get_client_for_file(&test_file).unwrap();
3277+
assert_eq!(client.language_id(), "typescriptreact");
3278+
}
3279+
32463280
#[test]
32473281
fn test_get_client_for_file_routes_jsx_to_javascript_server() {
32483282
let temp_dir = TempDir::new().unwrap();

0 commit comments

Comments
 (0)