summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-05-03 10:01:57 +0200
committerDanilo M. <danix@danix.xyz>2026-05-03 10:01:57 +0200
commit823703d848e810ee1dbe00d5470c60302a59a422 (patch)
treec28043a609ad4d3168ba27146df8c6d779131c6b /tests
parentdf09c8dc84c7df2ba589c486b801454290a2b404 (diff)
downloadpublisher-823703d848e810ee1dbe00d5470c60302a59a422.tar.gz
publisher-823703d848e810ee1dbe00d5470c60302a59a422.zip
feat: article scanner with translation pair detection
Diffstat (limited to 'tests')
-rw-r--r--tests/test_article_scanner.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/test_article_scanner.py b/tests/test_article_scanner.py
new file mode 100644
index 0000000..66daf83
--- /dev/null
+++ b/tests/test_article_scanner.py
@@ -0,0 +1,41 @@
+# tests/test_article_scanner.py
+from pathlib import Path
+from core.article_scanner import scan_articles
+
+def _make_article(base: Path, lang: str, slug: str, fm_extra: str = "") -> Path:
+ p = base / "content" / lang / "articles" / slug
+ p.mkdir(parents=True)
+ (p / "index.md").write_text(f"+++\ntitle = \"{slug}\"\ntype = \"Tech\"\n{fm_extra}+++\n\nBody.\n")
+ return p / "index.md"
+
+def test_scan_finds_articles(tmp_path):
+ _make_article(tmp_path, "it", "primo-post")
+ _make_article(tmp_path, "en", "first-post")
+ articles = scan_articles(tmp_path)
+ slugs = [a.slug for a in articles]
+ assert "primo-post" in slugs
+ assert "first-post" in slugs
+
+def test_scan_detects_translation_pair(tmp_path):
+ _make_article(tmp_path, "it", "shared-slug")
+ _make_article(tmp_path, "en", "shared-slug")
+ articles = scan_articles(tmp_path)
+ it_art = next(a for a in articles if a.lang == "it" and a.slug == "shared-slug")
+ en_art = next(a for a in articles if a.lang == "en" and a.slug == "shared-slug")
+ assert it_art.has_translation is True
+ assert it_art.translation_path == en_art.path
+ assert en_art.has_translation is True
+
+def test_scan_detects_missing_translation(tmp_path):
+ _make_article(tmp_path, "it", "solo-italiano")
+ articles = scan_articles(tmp_path)
+ art = next(a for a in articles if a.slug == "solo-italiano")
+ assert art.has_translation is False
+ assert art.translation_path is None
+
+def test_scan_parses_frontmatter(tmp_path):
+ _make_article(tmp_path, "it", "con-fm", 'tags = ["linux"]\n')
+ articles = scan_articles(tmp_path)
+ art = next(a for a in articles if a.slug == "con-fm")
+ assert art.frontmatter["title"] == "con-fm"
+ assert "linux" in art.frontmatter["tags"]