import { describe, it, expect } from "vitest" import { formatResult, type FetchResult } from "../src/fetch.js" describe("formatResult", () => { it("formats a full result with all metadata", () => { const result: FetchResult = { url: "https://example.com/article", title: "Test Article", author: "Jane Doe", description: "A test article about testing", domain: "example.com", published: "2026-01-15", wordCount: 500, content: "This is the article body.", } const output = formatResult(result) expect(output).toContain("# Test Article") expect(output).toContain("**Author:** Jane Doe") expect(output).toContain("**Domain:** example.com") expect(output).toContain("**Published:** 2026-01-15") expect(output).toContain("**Words:** 500") expect(output).toContain("> A test article about testing") expect(output).toContain("---") expect(output).toContain("This is the article body.") }) it("handles minimal result with no metadata", () => { const result: FetchResult = { url: "https://example.com", title: null, author: null, description: null, domain: null, published: null, wordCount: null, content: "Just content.", } const output = formatResult(result) expect(output).not.toContain("#") expect(output).not.toContain("**Author:**") expect(output).not.toContain("---") expect(output).toContain("Just content.") }) it("handles empty content", () => { const result: FetchResult = { url: "https://example.com", title: "Empty Page", author: null, description: null, domain: null, published: null, wordCount: null, content: "", } const output = formatResult(result) expect(output).toContain("# Empty Page") expect(output).toContain("(no content extracted)") }) it("includes only available metadata fields", () => { const result: FetchResult = { url: "https://example.com", title: "Partial", author: "Author Only", description: null, domain: null, published: null, wordCount: 100, content: "Body text.", } const output = formatResult(result) expect(output).toContain("**Author:** Author Only") expect(output).toContain("**Words:** 100") expect(output).not.toContain("**Domain:**") expect(output).not.toContain("**Published:**") }) })