import { describe, expect, it, spyOn } from "bun:test"; import { log } from "@clack/prompts"; import { Injected, injectLinkTags } from "../src/commands/inject"; const atUri = "at://did:plc:abc123/app.bsky.feed.post/xyz"; const publicationUri = "at://did:plc:def456/app.bsky.feed.generator/main"; describe("injectLinkTags", () => { describe("neither tag needs injection", () => { it("returns AlreadyPresent when both tags already exist", () => { const content = ` `; const result = injectLinkTags( false, "test.html", content, atUri, publicationUri, ); expect(result).toBe(Injected.AlreadyPresent); }); }); describe("one tag needs injection", () => { it("injects only documentLinkTag when publicationLinkTag is already present", () => { const content = ` `; const result = injectLinkTags( false, "test.html", content, atUri, publicationUri, ); expect(typeof result).toBe("string"); expect(result as string).toContain( ``, ); expect( result as string, ).not.toContain(` { const content = ` `; const result = injectLinkTags( false, "test.html", content, atUri, publicationUri, ); expect(typeof result).toBe("string"); expect(result as string).toContain( ``, ); }); }); describe("both tags need injection", () => { it("injects both tags when neither is present", () => { const content = "\n"; const result = injectLinkTags( false, "test.html", content, atUri, publicationUri, ); expect(typeof result).toBe("string"); expect(result as string).toContain( ``, ); expect(result as string).toContain( ``, ); }); it("injects tags before ", () => { const content = "\n"; const result = injectLinkTags( false, "test.html", content, atUri, publicationUri, ) as string; const headCloseIndex = result.indexOf(""); expect(result.indexOf('rel="site.standard.document"')).toBeLessThan( headCloseIndex, ); expect(result.indexOf('rel="site.standard.publication"')).toBeLessThan( headCloseIndex, ); }); it("returns Skipped when no is found", () => { const warnSpy = spyOn(log, "warn").mockImplementation(() => {}); const content = "No head tag here"; const result = injectLinkTags( false, "test.html", content, atUri, publicationUri, ); expect(result).toBe(Injected.Skipped); expect(warnSpy).toHaveBeenCalledWith( " No found in test.html, skipping", ); warnSpy.mockRestore(); }); it("returns Faked and does not modify content during dry run", () => { const messageSpy = spyOn(log, "message").mockImplementation(() => {}); const content = "\n"; const result = injectLinkTags( true, "test.html", content, atUri, publicationUri, ); expect(result).toBe(Injected.Faked); expect(messageSpy).toHaveBeenCalledWith(" Would inject into: test.html"); expect(messageSpy).toHaveBeenCalledWith( ` `, ); expect(messageSpy).toHaveBeenCalledWith( ` `, ); messageSpy.mockRestore(); }); }); });