frontmatter: dict
has_translation: bool
translation_path: Path | None
+
+ @property
+ def draft(self) -> bool:
+ return bool(self.frontmatter.get("draft", False))
+
+ @property
+ def meta_type(self) -> str:
+ return str(self.frontmatter.get("type", ""))
+
+ @property
+ def meta_tags(self) -> str:
+ tags = self.frontmatter.get("tags", [])
+ if isinstance(tags, list):
+ return ", ".join(str(t) for t in tags)
+ return str(tags) if tags else ""
+
+ @property
+ def meta_categories(self) -> str:
+ cats = self.frontmatter.get("categories", [])
+ if isinstance(cats, list):
+ return ", ".join(str(c) for c in cats)
+ return str(cats) if cats else ""
+
+ @property
+ def meta_date(self) -> str:
+ raw = self.frontmatter.get("date", "")
+ if not raw:
+ return ""
+ return str(raw)[:10] # ISO date → "YYYY-MM-DD"
)
assert a.has_translation is True
assert a.translation_path is not None
+
+
+def test_article_draft_property():
+ fm = {"draft": True, "type": "Tech", "tags": ["linux"], "categories": ["DIY"], "date": "2024-01-15T10:00:00+00:00"}
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter=fm, has_translation=False, translation_path=None)
+ assert a.draft is True
+
+
+def test_article_meta_type():
+ fm = {"type": "Tech"}
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter=fm, has_translation=False, translation_path=None)
+ assert a.meta_type == "Tech"
+
+
+def test_article_meta_type_missing():
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter={}, has_translation=False, translation_path=None)
+ assert a.meta_type == ""
+
+
+def test_article_meta_tags():
+ fm = {"tags": ["linux", "python"]}
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter=fm, has_translation=False, translation_path=None)
+ assert a.meta_tags == "linux, python"
+
+
+def test_article_meta_tags_empty():
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter={}, has_translation=False, translation_path=None)
+ assert a.meta_tags == ""
+
+
+def test_article_meta_categories():
+ fm = {"categories": ["DIY", "Tech"]}
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter=fm, has_translation=False, translation_path=None)
+ assert a.meta_categories == "DIY, Tech"
+
+
+def test_article_meta_date():
+ fm = {"date": "2024-01-15T10:00:00+00:00"}
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter=fm, has_translation=False, translation_path=None)
+ assert a.meta_date == "2024-01-15"
+
+
+def test_article_meta_date_missing():
+ a = Article(slug="test", lang="it", path=Path("/tmp/test"), frontmatter={}, has_translation=False, translation_path=None)
+ assert a.meta_date == ""