import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const readCliBannerTaglineModeMock = vi.fn(); vi.mock("./banner-config-lite.js", () => ({ readCliBannerTaglineMode: readCliBannerTaglineModeMock, })); let formatCliBannerLine: typeof import("./banner.js").formatCliBannerLine; beforeAll(async () => { ({ formatCliBannerLine } = await import("./banner.js")); }); beforeEach(() => { readCliBannerTaglineModeMock.mockReset(); readCliBannerTaglineModeMock.mockReturnValue(undefined); }); describe("formatCliBannerLine", () => { it("hides tagline text when cli.banner.taglineMode is off", () => { readCliBannerTaglineModeMock.mockReturnValue("off"); const line = formatCliBannerLine("2026.3.7", { commit: "abc1234", richTty: false, }); expect(line).toBe("🦞 OpenClaw 2026.3.7 (abc1234)"); }); it("uses default tagline when cli.banner.taglineMode is default", () => { readCliBannerTaglineModeMock.mockReturnValue("default"); const line = formatCliBannerLine("2026.3.7", { commit: "abc1234", richTty: false, }); expect(line).toBe("🦞 OpenClaw 2026.3.7 (abc1234) — All your chats, one OpenClaw."); }); it("prefers explicit tagline mode over config", () => { readCliBannerTaglineModeMock.mockReturnValue("off"); const line = formatCliBannerLine("2026.3.7", { commit: "abc1234", richTty: false, mode: "default", }); expect(line).toBe("🦞 OpenClaw 2026.3.7 (abc1234) — All your chats, one OpenClaw."); }); });