From 0303315057aa440f01b90706d1dc62204a5611cc Mon Sep 17 00:00:00 2001 From: Marc Jakobi Date: Thu, 6 Jun 2024 16:57:52 +0200 Subject: [PATCH] tests(handlers/keys): ensure plugins are only loaded once --- lua/lz/n/handler/keys.lua | 7 +++++++ spec/keys_spec.lua | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lua/lz/n/handler/keys.lua b/lua/lz/n/handler/keys.lua index 5b55afb..68c0a79 100644 --- a/lua/lz/n/handler/keys.lua +++ b/lua/lz/n/handler/keys.lua @@ -133,4 +133,11 @@ function M.add(plugin) end end +---@param plugin LzPlugin +function M.del(plugin) + for _, plugins in pairs(M.pending) do + plugins[plugin.name] = nil + end +end + return M diff --git a/spec/keys_spec.lua b/spec/keys_spec.lua index c335d8e..bf48b81 100644 --- a/spec/keys_spec.lua +++ b/spec/keys_spec.lua @@ -34,4 +34,24 @@ describe("keys", function() assert.spy(spy_load).called(1) -- end) + it("Multiple keys only load plugin once", function() + ---@param lzkeys LzKeys[] + local function itt(lzkeys) + ---@type LzPlugin + local plugin = { + name = "foo", + keys = lzkeys, + } + local spy_load = spy.on(loader, "_load") + state.plugins[plugin.name] = plugin + keys.add(plugin) + local feed1 = vim.api.nvim_replace_termcodes("" .. lzkeys[1].lhs, true, true, true) + vim.api.nvim_feedkeys(feed1, "ix", false) + local feed2 = vim.api.nvim_replace_termcodes("" .. lzkeys[2].lhs, true, true, true) + vim.api.nvim_feedkeys(feed2, "ix", false) + assert.spy(spy_load).called(1) + end + itt({ keys.parse("tt"), keys.parse("ff") }) + itt({ keys.parse("ff"), keys.parse("tt") }) + end) end)