mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-05-04 02:34:52 +00:00
69 lines
1.9 KiB
Lua
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)
|