mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 09:00:06 +08:00
150 lines
4.1 KiB
Lua
Vendored
150 lines
4.1 KiB
Lua
Vendored
local popup = require "plenary.popup"
|
|
|
|
local eq = assert.are.same
|
|
|
|
describe("plenary.popup", function()
|
|
before_each(function()
|
|
vim.cmd [[highlight PopupColor1 ctermbg=lightblue guibg=lightblue]]
|
|
vim.cmd [[highlight PopupColor2 ctermbg=lightcyan guibg=lightcyan]]
|
|
end)
|
|
|
|
-- TODO: Probably want to clear all the popups between iterations
|
|
-- after_each(function() end)
|
|
|
|
it("can create a very simple window", function()
|
|
local win_id = popup.create("hello there", {
|
|
line = 1,
|
|
col = 1,
|
|
width = 20,
|
|
})
|
|
|
|
local win_config = vim.api.nvim_win_get_config(win_id)
|
|
eq(20, win_config.width)
|
|
end)
|
|
|
|
it("can apply a highlight", function()
|
|
local win_id = popup.create("hello there", {
|
|
highlight = "PopupColor1",
|
|
})
|
|
|
|
eq("Normal:PopupColor1,EndOfBuffer:PopupColor1", vim.api.nvim_win_get_option(win_id, "winhl"))
|
|
end)
|
|
|
|
it("can create a border", function()
|
|
local win_id, config = popup.create("hello border", {
|
|
line = 2,
|
|
col = 3,
|
|
border = {},
|
|
})
|
|
|
|
eq(true, vim.api.nvim_win_is_valid(win_id))
|
|
|
|
local border_id = config.border.win_id
|
|
assert(border_id, "Has a border win id")
|
|
eq(true, vim.api.nvim_win_is_valid(border_id))
|
|
end)
|
|
|
|
it("can apply a border highlight", function()
|
|
local _, opts = popup.create("hello there", {
|
|
border = true,
|
|
borderhighlight = "PopupColor2",
|
|
})
|
|
|
|
local border_win_id = opts.border.win_id
|
|
eq("Normal:PopupColor2", vim.api.nvim_win_get_option(border_win_id, "winhl"))
|
|
end)
|
|
|
|
it("can ignore border highlight with no border", function()
|
|
local _ = popup.create("hello there", {
|
|
border = false,
|
|
borderhighlight = "PopupColor3",
|
|
})
|
|
end)
|
|
|
|
it("can do basic padding", function()
|
|
local win_id = popup.create("12345", {
|
|
line = 1,
|
|
col = 1,
|
|
padding = {},
|
|
})
|
|
|
|
local bufnr = vim.api.nvim_win_get_buf(win_id)
|
|
eq({ "", " 12345 ", "" }, vim.api.nvim_buf_get_lines(bufnr, 0, -1, false))
|
|
end)
|
|
|
|
it("can do padding and border", function()
|
|
local win_id, config = popup.create("hello border", {
|
|
line = 2,
|
|
col = 2,
|
|
border = {},
|
|
padding = {},
|
|
})
|
|
|
|
local bufnr = vim.api.nvim_win_get_buf(win_id)
|
|
eq({ "", " hello border ", "" }, vim.api.nvim_buf_get_lines(bufnr, 0, -1, false))
|
|
|
|
local border_id = config.border.win_id
|
|
assert(border_id, "Has a border win id")
|
|
eq(true, vim.api.nvim_win_is_valid(border_id))
|
|
end)
|
|
|
|
describe("borderchars", function()
|
|
local test_border = function(name, borderchars, expected)
|
|
it(name, function()
|
|
local _, config = popup.create("all the plus signs", {
|
|
line = 8,
|
|
col = 55,
|
|
padding = { 0, 3, 0, 3 },
|
|
borderchars = borderchars,
|
|
})
|
|
|
|
local border_id = config.border.win_id
|
|
local border_bufnr = vim.api.nvim_win_get_buf(border_id)
|
|
eq(expected, vim.api.nvim_buf_get_lines(border_bufnr, 0, -1, false))
|
|
end)
|
|
end
|
|
|
|
test_border("can support multiple border patterns", { "+" }, {
|
|
"++++++++++++++++++++++++++",
|
|
"+ +",
|
|
"++++++++++++++++++++++++++",
|
|
})
|
|
|
|
test_border("can support multiple patterns inside the borderchars", { "-", "+" }, {
|
|
"+------------------------+",
|
|
"- -",
|
|
"+------------------------+",
|
|
})
|
|
end)
|
|
|
|
describe("what", function()
|
|
it("can be an existing bufnr", function()
|
|
local bufnr = vim.api.nvim_create_buf(false, false)
|
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { "pass bufnr 1", "pass bufnr 2" })
|
|
local win_id = popup.create(bufnr, {
|
|
line = 8,
|
|
col = 55,
|
|
minwidth = 20,
|
|
})
|
|
|
|
eq(bufnr, vim.api.nvim_win_get_buf(win_id))
|
|
eq({ "pass bufnr 1", "pass bufnr 2" }, vim.api.nvim_buf_get_lines(bufnr, 0, -1, false))
|
|
end)
|
|
end)
|
|
|
|
describe("cursor", function()
|
|
pending("not yet tested", function()
|
|
popup.create({ "option 1", "option 2" }, {
|
|
line = "cursor+2",
|
|
col = "cursor+2",
|
|
border = { 1, 1, 1, 1 },
|
|
enter = true,
|
|
cursorline = true,
|
|
callback = function(win_id, sel)
|
|
print(sel)
|
|
end,
|
|
})
|
|
end)
|
|
end)
|
|
end)
|