summaryrefslogtreecommitdiff
path: root/tests/integration
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration')
-rw-r--r--tests/integration/lsp_tests.rs120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs
index 347324899..ed95541d2 100644
--- a/tests/integration/lsp_tests.rs
+++ b/tests/integration/lsp_tests.rs
@@ -5365,6 +5365,126 @@ fn lsp_jsr_auto_import_completion_import_map() {
}
#[test]
+fn lsp_jsr_code_action_missing_declaration() {
+ let context = TestContextBuilder::new()
+ .use_http_server()
+ .use_temp_cwd()
+ .build();
+ let temp_dir = context.temp_dir();
+ let file = source_file(
+ temp_dir.path().join("file.ts"),
+ r#"
+ import { someFunction } from "jsr:@denotest/types-file";
+ assertReturnType(someFunction());
+ "#,
+ );
+ let mut client = context.new_lsp_command().build();
+ client.initialize_default();
+ client.write_request(
+ "workspace/executeCommand",
+ json!({
+ "command": "deno.cache",
+ "arguments": [[], file.uri()],
+ }),
+ );
+ client.did_open_file(&file);
+ let res = client.write_request(
+ "textDocument/codeAction",
+ json!({
+ "textDocument": {
+ "uri": file.uri(),
+ },
+ "range": {
+ "start": { "line": 2, "character": 6 },
+ "end": { "line": 2, "character": 22 },
+ },
+ "context": {
+ "diagnostics": [
+ {
+ "range": {
+ "start": { "line": 2, "character": 6 },
+ "end": { "line": 2, "character": 22 },
+ },
+ "severity": 8,
+ "code": 2304,
+ "source": "deno-ts",
+ "message": "Cannot find name 'assertReturnType'.",
+ "relatedInformation": [],
+ },
+ ],
+ "only": ["quickfix"],
+ },
+ }),
+ );
+ assert_eq!(
+ res,
+ json!([
+ {
+ "title": "Add missing function declaration 'assertReturnType'",
+ "kind": "quickfix",
+ "diagnostics": [
+ {
+ "range": {
+ "start": {
+ "line": 2,
+ "character": 6,
+ },
+ "end": {
+ "line": 2,
+ "character": 22,
+ },
+ },
+ "severity": 8,
+ "code": 2304,
+ "source": "deno-ts",
+ "message": "Cannot find name 'assertReturnType'.",
+ "relatedInformation": [],
+ },
+ ],
+ "edit": {
+ "documentChanges": [
+ {
+ "textDocument": {
+ "uri": file.uri(),
+ "version": 1,
+ },
+ "edits": [
+ {
+ "range": {
+ "start": {
+ "line": 1,
+ "character": 6,
+ },
+ "end": {
+ "line": 1,
+ "character": 6,
+ },
+ },
+ "newText": "import { ReturnType } from \"jsr:@denotest/types-file/types\";\n",
+ },
+ {
+ "range": {
+ "start": {
+ "line": 3,
+ "character": 0,
+ },
+ "end": {
+ "line": 3,
+ "character": 0,
+ },
+ },
+ "newText": "\n function assertReturnType(arg0: ReturnType) {\n throw new Error(\"Function not implemented.\");\n }\n",
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ])
+ );
+}
+
+#[test]
fn lsp_code_actions_deno_cache_npm() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let mut client = context.new_lsp_command().build();