import { describe, expect, it } from "vitest"; import { buildInspectorEmptyStateMessage, buildKeyBrowserEmptyStateMessage, buildKeyBrowserStatusMessage, resolveKeyBrowserSearchState, } from "./key-browser-search"; describe("key browser search helpers", () => { it("classifies blank, contains, and wildcard search input", () => { expect(resolveKeyBrowserSearchState(" ")).toEqual({ trimmedQuery: "", requestPattern: null, mode: "all", }); expect(resolveKeyBrowserSearchState(" smoke ")).toEqual({ trimmedQuery: "smoke", requestPattern: "*smoke*", mode: "contains", }); expect(resolveKeyBrowserSearchState("smoke:*")).toEqual({ trimmedQuery: "smoke:*", requestPattern: "smoke:*", mode: "pattern", }); }); it("builds a stable status message for visible counts and load state", () => { expect( buildKeyBrowserStatusMessage({ databaseLabel: "db0", visibleCount: 7, hasMore: true, isLoading: false, search: resolveKeyBrowserSearchState("smoke"), }), ).toBe('7+ keys visible for contains search "smoke" in db0.'); expect( buildKeyBrowserStatusMessage({ databaseLabel: "db3", visibleCount: 0, hasMore: false, isLoading: true, search: resolveKeyBrowserSearchState("smoke:*"), }), ).toBe('Searching db3 for "smoke:*".'); }); it("builds browser empty-state copy for blank and filtered results", () => { expect( buildKeyBrowserEmptyStateMessage({ databaseLabel: "db0", isLoading: false, search: resolveKeyBrowserSearchState(""), }), ).toBe("No keys are visible in db0 yet."); expect( buildKeyBrowserEmptyStateMessage({ databaseLabel: "db2", isLoading: false, search: resolveKeyBrowserSearchState("audit:*"), }), ).toBe('No keys match "audit:*" in db2.'); }); it("keeps inspector empty-state guidance aligned with browser search state", () => { expect( buildInspectorEmptyStateMessage("db1", resolveKeyBrowserSearchState("")), ).toBe( "No keys are visible in db1 yet. Browse another database or refresh after data arrives.", ); expect( buildInspectorEmptyStateMessage("db4", resolveKeyBrowserSearchState("jobs")), ).toBe( 'No keys match "jobs" in db4. Clear or adjust the search to restore an inspector target.', ); }); });