import { readmeFirstParagraph } from "../readmeParagraph";
describe("readmeFirstParagraph", () => {
it("skips HTML wrappers and badges", () => {
const lines = [
"<div align=\"center\">",
"<img src=\"badge.png\" />",
"</div>",
"",
"Project description starts here.",
];
expect(readmeFirstParagraph(lines)).toBe("Project description starts here.");
});
it("stops when a heading appears after content", () => {
const lines = ["Intro line", "", "# Heading", "More details"];
expect(readmeFirstParagraph(lines)).toBe("Intro line");
});
it("stops on HTML heading lines after content", () => {
const lines = ["Intro line", "<h2>Section</h2>", "More details"];
expect(readmeFirstParagraph(lines)).toBe("Intro line");
});
it("skips headings before content and continues searching", () => {
const lines = ["# Title", "<h2>Sub</h2>", "", "Actual content."];
expect(readmeFirstParagraph(lines)).toBe("Actual content.");
});
it("skips pure HTML tag lines before content", () => {
const lines = ["<p></p>", "Actual content."];
expect(readmeFirstParagraph(lines)).toBe("Actual content.");
});
it("skips anchor-only HTML lines", () => {
const lines = ["<a href=\"#\"></a>", "Content after link."];
expect(readmeFirstParagraph(lines)).toBe("Content after link.");
});
it("skips bare HTML tag lines that strip to empty", () => {
const lines = ["<span></span>", "More content."];
expect(readmeFirstParagraph(lines)).toBe("More content.");
});
it("skips <img> lines before content", () => {
const lines = ["<img src=\"badge.png\">", "Readable content."];
expect(readmeFirstParagraph(lines)).toBe("Readable content.");
});
it("skips <img> lines even when followed by text", () => {
const lines = ["<img src=\"badge.png\"> Caption", "Readable content."];
expect(readmeFirstParagraph(lines)).toBe("Readable content.");
});
it("skips <div> wrapper lines before content", () => {
const lines = ["<div>", " </div>", "Readable content."];
expect(readmeFirstParagraph(lines)).toBe("Readable content.");
});
it("skips empty anchor lines before content", () => {
const lines = ["<a href=\"#\"></a>", "Readable content."];
expect(readmeFirstParagraph(lines)).toBe("Readable content.");
});
it("skips markdown image lines", () => {
const lines = ["", "Text line."];
expect(readmeFirstParagraph(lines)).toBe("Text line.");
});
it("skips markdown linked image lines", () => {
const lines = ["[](https://example.com)", "More text."];
expect(readmeFirstParagraph(lines)).toBe("More text.");
});
it("returns empty when only skippable lines exist", () => {
const lines = ["<div></div>", "", ""];
expect(readmeFirstParagraph(lines)).toBe("");
});
});