mirror of
https://github.com/ThePrimeagen/harpoon.git
synced 2025-07-14 10:00:29 +00:00
214 lines
5.9 KiB
Lua
214 lines
5.9 KiB
Lua
local utils = require("harpoon.test.utils")
|
|
local harpoon = require("harpoon")
|
|
|
|
local eq = assert.are.same
|
|
|
|
local be = utils.before_each(os.tmpname())
|
|
|
|
describe("harpoon", function()
|
|
before_each(function()
|
|
be()
|
|
harpoon = require("harpoon")
|
|
end)
|
|
|
|
it("when we change buffers we update the row and column", function()
|
|
local file_name = "/tmp/harpoon-test"
|
|
local row = 1
|
|
local col = 0
|
|
local target_buf = utils.create_file(file_name, {
|
|
"foo",
|
|
"bar",
|
|
"baz",
|
|
"qux",
|
|
}, row, col)
|
|
|
|
local list = harpoon:list():append()
|
|
local other_buf = utils.create_file("other-file", {
|
|
"foo",
|
|
"bar",
|
|
"baz",
|
|
"qux",
|
|
}, row, col)
|
|
|
|
vim.api.nvim_set_current_buf(target_buf)
|
|
vim.api.nvim_win_set_cursor(0, { row + 1, col })
|
|
vim.api.nvim_set_current_buf(other_buf)
|
|
|
|
local expected = {
|
|
{ value = file_name, context = { row = row + 1, col = col } },
|
|
}
|
|
|
|
eq(expected, list.items)
|
|
end)
|
|
|
|
it("full harpoon add sync cycle", function()
|
|
local file_name = "/tmp/harpoon-test"
|
|
local row = 3
|
|
local col = 1
|
|
local default_list_name = harpoon:info().default_list_name
|
|
utils.create_file(file_name, {
|
|
"foo",
|
|
"bar",
|
|
"baz",
|
|
"qux",
|
|
}, row, col)
|
|
|
|
local list = harpoon:list()
|
|
list:append()
|
|
harpoon:sync()
|
|
|
|
eq(harpoon:dump(), {
|
|
testies = {
|
|
[default_list_name] = list:encode(),
|
|
},
|
|
})
|
|
end)
|
|
|
|
it("prepend/append double add", function()
|
|
local default_list_name = harpoon:info().default_list_name
|
|
local file_name_1 = "/tmp/harpoon-test"
|
|
local row_1 = 3
|
|
local col_1 = 1
|
|
|
|
local file_name_2 = "/tmp/harpoon-test-2"
|
|
local row_2 = 1
|
|
local col_2 = 2
|
|
|
|
local contents = { "foo", "bar", "baz", "qux" }
|
|
|
|
local bufnr_1 = utils.create_file(file_name_1, contents, row_1, col_1)
|
|
local list = harpoon:list():append()
|
|
|
|
utils.create_file(file_name_2, contents, row_2, col_2)
|
|
harpoon:list():prepend()
|
|
|
|
harpoon:sync()
|
|
|
|
eq(harpoon:dump(), {
|
|
testies = {
|
|
[default_list_name] = list:encode(),
|
|
},
|
|
})
|
|
|
|
eq(list.items, {
|
|
{ value = file_name_2, context = { row = row_2, col = col_2 } },
|
|
{ value = file_name_1, context = { row = row_1, col = col_1 } },
|
|
})
|
|
|
|
harpoon:list():append()
|
|
vim.api.nvim_set_current_buf(bufnr_1)
|
|
harpoon:list():prepend()
|
|
|
|
eq(list.items, {
|
|
{ value = file_name_2, context = { row = row_2, col = col_2 } },
|
|
{ value = file_name_1, context = { row = row_1, col = col_1 } },
|
|
})
|
|
end)
|
|
|
|
it("ui - display resolve", function()
|
|
harpoon:setup({
|
|
default = {
|
|
display = function(item)
|
|
-- split string on /
|
|
local parts = vim.split(item.value, "/")
|
|
return parts[#parts]
|
|
end,
|
|
},
|
|
})
|
|
|
|
local file_names = {
|
|
"/tmp/harpoon-test-1",
|
|
"/tmp/harpoon-test-2",
|
|
"/tmp/harpoon-test-3",
|
|
"/tmp/harpoon-test-4",
|
|
}
|
|
|
|
local contents = { "foo", "bar", "baz", "qux" }
|
|
|
|
local bufnrs = {}
|
|
local list = harpoon:list()
|
|
for _, v in ipairs(file_names) do
|
|
table.insert(bufnrs, utils.create_file(v, contents))
|
|
harpoon:list():append()
|
|
end
|
|
|
|
local displayed = list:display()
|
|
eq(displayed, {
|
|
"harpoon-test-1",
|
|
"harpoon-test-2",
|
|
"harpoon-test-3",
|
|
"harpoon-test-4",
|
|
})
|
|
|
|
table.remove(displayed, 3)
|
|
table.remove(displayed, 2)
|
|
|
|
list:resolve_displayed(displayed)
|
|
|
|
eq(list.items, {
|
|
{ value = file_names[1], context = { row = 4, col = 2 } },
|
|
{ value = file_names[4], context = { row = 4, col = 2 } },
|
|
})
|
|
end)
|
|
|
|
it("ui - display resolve", function()
|
|
local file_names = {
|
|
"/tmp/harpoon-test-1",
|
|
"/tmp/harpoon-test-2",
|
|
"/tmp/harpoon-test-3",
|
|
"/tmp/harpoon-test-4",
|
|
}
|
|
|
|
local contents = { "foo", "bar", "baz", "qux" }
|
|
|
|
local bufnrs = {}
|
|
local list = harpoon:list()
|
|
for _, v in ipairs(file_names) do
|
|
table.insert(bufnrs, utils.create_file(v, contents))
|
|
harpoon:list():append()
|
|
end
|
|
|
|
local displayed = list:display()
|
|
eq(displayed, {
|
|
"/tmp/harpoon-test-1",
|
|
"/tmp/harpoon-test-2",
|
|
"/tmp/harpoon-test-3",
|
|
"/tmp/harpoon-test-4",
|
|
})
|
|
|
|
table.remove(displayed, 3)
|
|
table.remove(displayed, 2)
|
|
|
|
table.insert(displayed, "/tmp/harpoon-test-other-file-1")
|
|
table.insert(displayed, "/tmp/harpoon-test-other-file-2")
|
|
|
|
list:resolve_displayed(displayed)
|
|
|
|
eq({
|
|
{ value = file_names[1], context = { row = 4, col = 2 } },
|
|
{ value = file_names[4], context = { row = 4, col = 2 } },
|
|
{
|
|
value = "/tmp/harpoon-test-other-file-1",
|
|
context = { row = 1, col = 0 },
|
|
},
|
|
{
|
|
value = "/tmp/harpoon-test-other-file-2",
|
|
context = { row = 1, col = 0 },
|
|
},
|
|
}, list.items)
|
|
|
|
table.remove(displayed, 3)
|
|
table.insert(displayed, "/tmp/harpoon-test-4")
|
|
list:resolve_displayed(displayed)
|
|
|
|
eq({
|
|
{ value = file_names[1], context = { row = 4, col = 2 } },
|
|
{ value = file_names[4], context = { row = 4, col = 2 } },
|
|
{
|
|
value = "/tmp/harpoon-test-other-file-2",
|
|
context = { row = 1, col = 0 },
|
|
},
|
|
}, list.items)
|
|
end)
|
|
end)
|