Untitled
unknown
plain_text
8 months ago
3.1 kB
4
Indexable
import { menuStructureService } from "@components/SecondaryNavigation/common/menuStructureService";
import { MORE_BUTTON_ITEM_ID } from "@components/SecondaryNavigation/common/constants";
describe("menuStructureService", () => {
describe("isTopLevelItem", () => {
it("should return true for an item with no parentId", () => {
const item = { id: "item_1", parentId: undefined };
expect(menuStructureService.isTopLevelItem(item)).toBe(true);
});
it("should return true for an item whose parentId is MORE_BUTTON_ITEM_ID", () => {
const item = { id: "item_2", parentId: MORE_BUTTON_ITEM_ID };
expect(menuStructureService.isTopLevelItem(item)).toBe(true);
});
it("should return false for MORE_BUTTON_ITEM_ID itself", () => {
const item = { id: MORE_BUTTON_ITEM_ID, parentId: undefined };
expect(menuStructureService.isTopLevelItem(item)).toBe(false);
});
it("should return false for an item with a valid parentId other than MORE_BUTTON_ITEM_ID", () => {
const item = { id: "item_3", parentId: "item_1" };
expect(menuStructureService.isTopLevelItem(item)).toBe(false);
});
});
describe("makeBackItem", () => {
it("should add back item properties to a menu item", () => {
const item = { id: "item_1", active: true, hasActivePath: true };
const backItem = menuStructureService.makeBackItem(item);
expect(backItem).toEqual({
...item,
isBackItem: true,
active: false,
hasActivePath: false
});
});
});
describe("flattenMenu", () => {
it("should correctly flatten a nested menu structure", () => {
const menu = [
{
title: "Item 1",
path: "/item1",
active: false,
items: [
{ title: "Subitem 1", path: "/item1/sub1", active: false },
{ title: "Subitem 2", path: "/item1/sub2", active: true }
]
},
{ title: "Item 2", path: "/item2", active: false }
];
const flatMenu = menuStructureService.flattenMenu(menu);
expect(Object.keys(flatMenu)).toContain("item_1");
expect(Object.keys(flatMenu)).toContain("item_1_1");
expect(Object.keys(flatMenu)).toContain("item_1_2");
expect(Object.keys(flatMenu)).toContain("item_2");
expect(Object.keys(flatMenu)).toContain(MORE_BUTTON_ITEM_ID);
expect(flatMenu["item_1"]).toEqual(
expect.objectContaining({ title: "Item 1", path: "/item1", active: false })
);
expect(flatMenu["item_1_1"]).toEqual(
expect.objectContaining({ title: "Subitem 1", path: "/item1/sub1", active: false })
);
expect(flatMenu["item_1_2"]).toEqual(
expect.objectContaining({ title: "Subitem 2", path: "/item1/sub2", active: true })
);
expect(flatMenu["item_2"]).toEqual(
expect.objectContaining({ title: "Item 2", path: "/item2", active: false })
);
expect(flatMenu[MORE_BUTTON_ITEM_ID]).toEqual(
expect.objectContaining({ id: MORE_BUTTON_ITEM_ID, title: "More", active: false })
);
});
});
});
Editor is loading...
Leave a Comment