Files
metabuilder/packages/nav_menu/seed/scripts/tests/items.test.lua
T
2025-12-30 13:28:02 +00:00

69 lines
1.9 KiB
Lua

-- Items tests for nav_menu package
-- Tests menu item builder functions
---@class MenuItemCase
---@field label string
---@field path string
---@field icon string|nil
---@field desc string
---@class MenuGroupCase
---@field label string
---@field children table|nil
---@field icon string|nil
---@field desc string
---@class ItemsCases
---@field menu_item MenuItemCase[]
---@field menu_group MenuGroupCase[]
local menu_item = require("items/item")
local menu_group = require("items/group")
local menu_divider = require("items/divider")
---@type ItemsCases
local cases = load_cases("items.cases.json")
describe("Menu Item Builders", function()
describe("menu_item", function()
it.each(cases.menu_item, "$desc", function(testCase)
---@type MenuItemCase
local tc = testCase
local result = menu_item(tc.label, tc.path, tc.icon)
expect(result.type).toBe("menu_item")
expect(result.label).toBe(tc.label)
expect(result.path).toBe(tc.path)
if tc.icon then
expect(result.icon).toBe(tc.icon)
end
end)
end)
describe("menu_group", function()
it.each(cases.menu_group, "$desc", function(testCase)
---@type MenuGroupCase
local tc = testCase
local result = menu_group(tc.label, tc.children, tc.icon)
expect(result.type).toBe("menu_group")
expect(result.label).toBe(tc.label)
expect(result.children).toBeType("table")
end)
it("should include children in group", function()
local children = {
menu_item("Profile", "/profile"),
menu_item("Security", "/security")
}
local result = menu_group("Settings", children, "gear")
expect(#result.children).toBe(2)
expect(result.children[1].label).toBe("Profile")
end)
end)
describe("menu_divider", function()
it("should create divider", function()
local result = menu_divider()
expect(result.type).toBe("divider")
end)
end)
end)