"""Website crawl link extraction + source re-ingest."""
from __future__ import annotations
from forge.db.base import SessionLocal
from forge.knowledge.crawl import extract_links
from forge.services.knowledge import KnowledgeService
def test_extract_links_same_domain_only():
html = """
About
Pricing
External
Fragment dup
Mail
"""
links = extract_links(html, "https://acme.test/")
assert "https://acme.test/about" in links
assert "https://acme.test/pricing" in links
assert "https://other.test/x" not in links # external domain excluded
assert "mailto:hi@acme.test" not in links
assert links.count("https://acme.test/about") == 1 # fragment deduped
async def test_reingest_text_source_reembeds():
async with SessionLocal() as s:
src = await KnowledgeService.create_source(s, "t_re", "p_re", kind="text", name="doc",
text="Forge supports website crawling and re-ingest now.")
src = await KnowledgeService.ingest(s, src)
assert src.status == "ready" and src.chunks >= 1
src2 = await KnowledgeService.reingest(s, src)
assert src2.status == "ready" and src2.chunks >= 1