From cc0bf6287e1b66b2ff8e6acea02129e41452dbb5 Mon Sep 17 00:00:00 2001 From: Nikola Jichev Date: Tue, 14 Nov 2023 18:53:20 +0200 Subject: [PATCH] test: refactor tests using didOpen notification (#337) * Refactor tests using didOpen notification Uses a macro to hide the miscellaneous setup for the document didOpen notification. * Pull the arguments on the same line * Remove did_open/2 macro for now --- test/next_ls/completions_test.exs | 189 +++++++++--------------------- test/next_ls_test.exs | 52 +++----- test/support/utils.ex | 18 +++ 3 files changed, 89 insertions(+), 170 deletions(-) diff --git a/test/next_ls/completions_test.exs b/test/next_ls/completions_test.exs index 91af40f6..22535849 100644 --- a/test/next_ls/completions_test.exs +++ b/test/next_ls/completions_test.exs @@ -47,25 +47,14 @@ defmodule NextLS.CompletionsTest do test "global modules", %{client: client, foo: foo} do uri = uri(foo) - notify client, %{ - method: "textDocument/didOpen", - jsonrpc: "2.0", - params: %{ - textDocument: %{ - uri: uri, - languageId: "elixir", - version: 1, - text: """ - defmodule Foo do - def run() do - En - :ok - end - end - """ - } - } - } + did_open(client, foo, """ + defmodule Foo do + def run() do + En + :ok + end + end + """) request client, %{ method: "textDocument/completion", @@ -91,25 +80,14 @@ defmodule NextLS.CompletionsTest do test "global module remote functions", %{client: client, foo: foo} do uri = uri(foo) - notify client, %{ - method: "textDocument/didOpen", - jsonrpc: "2.0", - params: %{ - textDocument: %{ - uri: uri, - languageId: "elixir", - version: 1, - text: """ - defmodule Foo do - def run() do - Enum.fl - :ok - end - end - """ - } - } - } + did_open(client, foo, """ + defmodule Foo do + def run() do + Enum.fl + :ok + end + end + """) request client, %{ method: "textDocument/completion", @@ -141,25 +119,14 @@ defmodule NextLS.CompletionsTest do test "global structs", %{client: client, foo: foo} do uri = uri(foo) - notify client, %{ - method: "textDocument/didOpen", - jsonrpc: "2.0", - params: %{ - textDocument: %{ - uri: uri, - languageId: "elixir", - version: 1, - text: """ - defmodule Foo do - def run() do - %U - :ok - end - end - """ - } - } - } + did_open(client, foo, """ + defmodule Foo do + def run() do + %U + :ok + end + end + """) request client, %{ method: "textDocument/completion", @@ -182,25 +149,14 @@ defmodule NextLS.CompletionsTest do test "structs fields", %{client: client, foo: foo} do uri = uri(foo) - notify client, %{ - method: "textDocument/didOpen", - jsonrpc: "2.0", - params: %{ - textDocument: %{ - uri: uri, - languageId: "elixir", - version: 1, - text: """ - defmodule Foo do - def run() do - IO.inspect([%Bar{]) - :ok - end - end - """ - } - } - } + did_open(client, foo, """ + defmodule Foo do + def run() do + IO.inspect([%Bar{]) + :ok + end + end + """) request client, %{ method: "textDocument/completion", @@ -227,25 +183,14 @@ defmodule NextLS.CompletionsTest do test "special forms", %{client: client, foo: foo} do uri = uri(foo) - notify client, %{ - method: "textDocument/didOpen", - jsonrpc: "2.0", - params: %{ - textDocument: %{ - uri: uri, - languageId: "elixir", - version: 1, - text: """ - defmodule Foo do - def run() do - qu - :ok - end - end - """ - } - } - } + did_open(client, foo, """ + defmodule Foo do + def run() do + qu + :ok + end + end + """) request client, %{ method: "textDocument/completion", @@ -268,25 +213,14 @@ defmodule NextLS.CompletionsTest do test "bitstring modifiers", %{client: client, foo: foo} do uri = uri(foo) - notify client, %{ - method: "textDocument/didOpen", - jsonrpc: "2.0", - params: %{ - textDocument: %{ - uri: uri, - languageId: "elixir", - version: 1, - text: """ - defmodule Foo do - def run() do - < %{"kind" => "end", "message" => "Finished indexing!"}} diff --git a/test/support/utils.ex b/test/support/utils.ex index 58b936f1..7733442d 100644 --- a/test/support/utils.ex +++ b/test/support/utils.ex @@ -140,4 +140,22 @@ defmodule NextLS.Support.Utils do assert result == unquote(pattern) end end + + defmacro did_open(client, file_path, text) do + quote do + assert :ok == + notify(unquote(client), %{ + method: "textDocument/didOpen", + jsonrpc: "2.0", + params: %{ + textDocument: %{ + uri: uri(unquote(file_path)), + text: unquote(text), + languageId: "elixir", + version: 1 + } + } + }) + end + end end