aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/plugin/lsp/codelens_spec.lua62
1 files changed, 62 insertions, 0 deletions
diff --git a/test/functional/plugin/lsp/codelens_spec.lua b/test/functional/plugin/lsp/codelens_spec.lua
new file mode 100644
index 0000000000..e09d93f7cc
--- /dev/null
+++ b/test/functional/plugin/lsp/codelens_spec.lua
@@ -0,0 +1,62 @@
+local helpers = require('test.functional.helpers')(after_each)
+
+local exec_lua = helpers.exec_lua
+local eq = helpers.eq
+
+describe('vim.lsp.codelens', function()
+ before_each(function()
+ helpers.clear()
+ exec_lua('require("vim.lsp")')
+ end)
+ after_each(helpers.clear)
+
+ it('on_codelens_stores_and_displays_lenses', function()
+ local fake_uri = "file://fake/uri"
+ local bufnr = exec_lua([[
+ fake_uri = ...
+ local bufnr = vim.uri_to_bufnr(fake_uri)
+ local lines = {'So', 'many', 'lines'}
+ vim.fn.bufload(bufnr)
+ vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines)
+ return bufnr
+ ]], fake_uri)
+
+ exec_lua([[
+ local bufnr = ...
+ local lenses = {
+ {
+ range = {
+ start = { line = 0, character = 0, },
+ ['end'] = { line = 0, character = 0 }
+ },
+ command = { title = 'Lens1', command = 'Dummy' }
+ },
+ }
+ vim.lsp.codelens.on_codelens(nil, 'textDocument/codeLens', lenses, 1, bufnr)
+ ]], bufnr)
+
+ local stored_lenses = exec_lua('return vim.lsp.codelens.get(...)', bufnr)
+ local expected = {
+ {
+ range = {
+ start = { line = 0, character = 0 },
+ ['end'] = { line = 0, character = 0 }
+ },
+ command = {
+ title = 'Lens1',
+ command = 'Dummy',
+ },
+ },
+ }
+ eq(expected, stored_lenses)
+
+ local virtual_text_chunks = exec_lua([[
+ local bufnr = ...
+ local ns = vim.lsp.codelens.__namespaces[1]
+ local extmarks = vim.api.nvim_buf_get_extmarks(bufnr, ns, 0, -1, {})
+ return vim.api.nvim_buf_get_extmark_by_id(bufnr, ns, extmarks[1][1], { details = true })[3].virt_text
+ ]], bufnr)
+
+ eq({[1] = {'Lens1', 'LspCodeLens'}}, virtual_text_chunks)
+ end)
+end)