summaryrefslogtreecommitdiff
path: root/tests/context_spec.lua
diff options
context:
space:
mode:
authorMike Vink <mike@pionative.com>2025-01-19 13:52:31 +0100
committerMike Vink <mike@pionative.com>2025-01-19 13:52:31 +0100
commitc65afb488eb9eab85063d79783d40ae1d7138586 (patch)
tree48ce8318f6fc22eb0b82df83b5c175469b853643 /tests/context_spec.lua
Squashed 'mut/neovim/pack/plugins/start/quicker.nvim/' content from commit 049def7
git-subtree-dir: mut/neovim/pack/plugins/start/quicker.nvim git-subtree-split: 049def718213d3cdf49fdf29835aded09b3e54a3
Diffstat (limited to 'tests/context_spec.lua')
-rw-r--r--tests/context_spec.lua134
1 files changed, 134 insertions, 0 deletions
diff --git a/tests/context_spec.lua b/tests/context_spec.lua
new file mode 100644
index 0000000..4a4ef5a
--- /dev/null
+++ b/tests/context_spec.lua
@@ -0,0 +1,134 @@
+local quicker = require("quicker")
+local test_util = require("tests.test_util")
+
+describe("context", function()
+ after_each(function()
+ test_util.reset_editor()
+ end)
+
+ it("expand results", function()
+ local first = test_util.make_tmp_file("expand_1.txt", 10)
+ local second = test_util.make_tmp_file("expand_2.txt", 10)
+ local first_buf = vim.fn.bufadd(first)
+ local second_buf = vim.fn.bufadd(second)
+ vim.fn.setqflist({
+ {
+ bufnr = first_buf,
+ text = "line 2",
+ lnum = 2,
+ valid = 1,
+ },
+ {
+ bufnr = first_buf,
+ text = "line 8",
+ lnum = 8,
+ valid = 1,
+ },
+ {
+ bufnr = second_buf,
+ text = "line 4",
+ lnum = 4,
+ valid = 1,
+ },
+ })
+ vim.cmd.copen()
+ test_util.assert_snapshot(0, "expand_1")
+
+ vim.api.nvim_win_set_cursor(0, { 3, 0 })
+ quicker.expand()
+ test_util.assert_snapshot(0, "expand_2")
+ -- Cursor stays on the same item
+ assert.equals(12, vim.api.nvim_win_get_cursor(0)[1])
+ vim.api.nvim_win_set_cursor(0, { 14, 0 })
+
+ -- Expanding again will produce the same result
+ quicker.expand()
+ test_util.assert_snapshot(0, "expand_2")
+ assert.equals(14, vim.api.nvim_win_get_cursor(0)[1])
+
+ -- Expanding again will produce the same result
+ quicker.expand({ add_to_existing = true })
+ test_util.assert_snapshot(0, "expand_3")
+
+ -- Collapsing will return to the original state
+ quicker.collapse()
+ test_util.assert_snapshot(0, "expand_1")
+ assert.equals(3, vim.api.nvim_win_get_cursor(0)[1])
+ end)
+
+ it("expand loclist results", function()
+ local bufnr = vim.fn.bufadd(test_util.make_tmp_file("expand_loclist.txt", 10))
+ vim.fn.setloclist(0, {
+ {
+ bufnr = bufnr,
+ text = "line 2",
+ lnum = 2,
+ valid = 1,
+ },
+ })
+ vim.cmd.lopen()
+ quicker.expand()
+ test_util.assert_snapshot(0, "expand_loclist")
+ end)
+
+ it("expand when items missing bufnr", function()
+ local bufnr = vim.fn.bufadd(test_util.make_tmp_file("expand_missing.txt", 10))
+ vim.fn.setqflist({
+ {
+ bufnr = bufnr,
+ text = "line 2",
+ lnum = 2,
+ valid = 1,
+ },
+ {
+ text = "Valid line with no bufnr",
+ lnum = 4,
+ valid = 1,
+ },
+ {
+ bufnr = bufnr,
+ text = "Invalid line with a bufnr",
+ lnum = 5,
+ valid = 0,
+ },
+ {
+ text = "Invalid line with no bufnr",
+ lnum = 6,
+ valid = 0,
+ },
+ })
+ vim.cmd.copen()
+ quicker.expand()
+ -- The last three lines should be stripped after expansion
+ test_util.assert_snapshot(0, "expand_missing")
+ end)
+
+ it("expand removes duplicate line entries", function()
+ local bufnr = vim.fn.bufadd(test_util.make_tmp_file("expand_dupe.txt", 10))
+ vim.fn.setqflist({
+ {
+ bufnr = bufnr,
+ text = "line 2",
+ lnum = 2,
+ valid = 1,
+ },
+ {
+ bufnr = bufnr,
+ text = "line 3",
+ lnum = 3,
+ valid = 1,
+ },
+ {
+ bufnr = bufnr,
+ text = "line 3",
+ lnum = 3,
+ valid = 1,
+ },
+ })
+ vim.cmd.copen()
+ test_util.assert_snapshot(0, "expand_dupe_1")
+
+ quicker.expand()
+ test_util.assert_snapshot(0, "expand_dupe_2")
+ end)
+end)