import { ICommandBarItemProps } from "@fluentui/react"; import { CommandButtonComponentProps } from "../../Controls/CommandButton/CommandButtonComponent"; import * as CommandBarUtil from "./CommandBarUtil"; describe("CommandBarUtil tests", () => { const createButton = (): CommandButtonComponentProps => { return { iconSrc: "icon", iconAlt: "label", onCommandClick: jest.fn(), commandButtonLabel: "label", ariaLabel: "ariaLabel", hasPopup: true, disabled: true, tooltipText: "tooltipText", children: [], className: "className", }; }; it("should convert simple NavbarButtonConfig button", () => { const btn = createButton(); const backgroundColor = "backgroundColor"; const converteds = CommandBarUtil.convertButton([btn], backgroundColor); expect(converteds.length).toBe(1); const converted = converteds[0]; expect(converted.split).toBe(undefined); expect(converted.iconProps.imageProps.src).toEqual(btn.iconSrc); expect(converted.iconProps.imageProps.alt).toEqual(btn.iconAlt); expect(converted.text).toEqual(btn.commandButtonLabel); expect(converted.ariaLabel).toEqual(btn.ariaLabel); expect(converted.disabled).toEqual(btn.disabled); expect(converted.className).toEqual(btn.className); // Click gets called converted.onClick(); expect(btn.onCommandClick).toHaveBeenCalled(); }); it("should convert NavbarButtonConfig to split button", () => { const btn = createButton(); for (let i = 0; i < 3; i++) { const child = createButton(); child.commandButtonLabel = `child${i}`; btn.children.push(child); } const converteds = CommandBarUtil.convertButton([btn], "backgroundColor"); expect(converteds.length).toBe(1); const converted = converteds[0]; expect(converted.split).toBe(true); expect(converted.subMenuProps.items.length).toBe(btn.children.length); for (let i = 0; i < converted.subMenuProps.items.length; i++) { expect(converted.subMenuProps.items[i].text).toEqual(btn.children[i].commandButtonLabel); } }); it("should create buttons with unique keys", () => { const btns: CommandButtonComponentProps[] = []; for (let i = 0; i < 5; i++) { btns.push(createButton()); } const converteds = CommandBarUtil.convertButton(btns, "backgroundColor"); const uniqueKeys = converteds .map((btn: ICommandBarItemProps) => btn.key) .filter((value: string, index: number, self: string[]) => self.indexOf(value) === index); expect(uniqueKeys.length).toBe(btns.length); }); it("should create icon buttons with tooltips", () => { const btn = createButton(); const backgroundColor = "backgroundColor"; btn.commandButtonLabel = undefined; let converted = CommandBarUtil.convertButton([btn], backgroundColor)[0]; expect(converted.text).toEqual(btn.tooltipText); converted = CommandBarUtil.convertButton([btn], backgroundColor)[0]; delete btn.commandButtonLabel; expect(converted.text).toEqual(btn.tooltipText); }); });