From 03d08056c1b7de7983cb8fd1dbf5c1a2431d38a8 Mon Sep 17 00:00:00 2001 From: Marc Jakobi Date: Fri, 7 Jun 2024 13:32:35 +0200 Subject: [PATCH] tests: add ft_spec --- lua/lz/n/handler/ft.lua | 5 +++++ lua/lz/n/types.lua | 1 - spec/cmd_spec.lua | 2 +- spec/event_spec.lua | 2 +- spec/ft_spec.lua | 28 ++++++++++++++++++++++++++++ spec/keys_spec.lua | 2 +- 6 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 spec/ft_spec.lua diff --git a/lua/lz/n/handler/ft.lua b/lua/lz/n/handler/ft.lua index 44b0623..a93251a 100644 --- a/lua/lz/n/handler/ft.lua +++ b/lua/lz/n/handler/ft.lua @@ -23,4 +23,9 @@ function M.add(plugin) event.add(plugin) end +---@param plugin LzPlugin +function M.del(plugin) + event.del(plugin) +end + return M diff --git a/lua/lz/n/types.lua b/lua/lz/n/types.lua index 1129b2c..e971666 100644 --- a/lua/lz/n/types.lua +++ b/lua/lz/n/types.lua @@ -33,7 +33,6 @@ error("Cannot import a meta module") ---@class LzPluginHandlers ---@field event? LzEvent[] ----@field ft? LzEvent[] ---@field keys? LzKeys[] ---@field cmd? string[] diff --git a/spec/cmd_spec.lua b/spec/cmd_spec.lua index 1c21ace..b54c2df 100644 --- a/spec/cmd_spec.lua +++ b/spec/cmd_spec.lua @@ -4,7 +4,7 @@ local state = require("lz.n.state") local loader = require("lz.n.loader") local spy = require("luassert.spy") -describe("cmd", function() +describe("handlers.cmd", function() it("Command only loads plugin once and executes plugin command", function() ---@type LzPlugin local plugin = { diff --git a/spec/event_spec.lua b/spec/event_spec.lua index 70b2b1f..436a147 100644 --- a/spec/event_spec.lua +++ b/spec/event_spec.lua @@ -4,7 +4,7 @@ local state = require("lz.n.state") local loader = require("lz.n.loader") local spy = require("luassert.spy") -describe("event", function() +describe("handlers.event", function() it("can parse from string", function() assert.same({ event = "VimEnter", diff --git a/spec/ft_spec.lua b/spec/ft_spec.lua new file mode 100644 index 0000000..e1c0d9a --- /dev/null +++ b/spec/ft_spec.lua @@ -0,0 +1,28 @@ +---@diagnostic disable: invisible +local ft = require("lz.n.handler.ft") +local state = require("lz.n.state") +local loader = require("lz.n.loader") +local spy = require("luassert.spy") + +describe("handlers.ft", function() + it("can parse from string", function() + assert.same({ + event = "FileType", + id = "rust", + pattern = "rust", + }, ft.parse("rust")) + end) + it("filetype event loads plugins", function() + ---@type LzPlugin + local plugin = { + name = "Foo", + event = { ft.parse("rust") }, + } + local spy_load = spy.on(loader, "_load") + state.plugins[plugin.name] = plugin + ft.add(plugin) + vim.api.nvim_exec_autocmds("FileType", { pattern = "rust" }) + vim.api.nvim_exec_autocmds("FileType", { pattern = "rust" }) + assert.spy(spy_load).called(1) + end) +end) diff --git a/spec/keys_spec.lua b/spec/keys_spec.lua index 6c70d4a..f563027 100644 --- a/spec/keys_spec.lua +++ b/spec/keys_spec.lua @@ -4,7 +4,7 @@ local state = require("lz.n.state") local loader = require("lz.n.loader") local spy = require("luassert.spy") -describe("keys", function() +describe("handlers.keys", function() it("parses ids correctly", function() local tests = { { "", "", true },