from pathlib import Path
from core.models import Article, ARTICLE_TYPES


def test_article_types_contains_five():
    assert len(ARTICLE_TYPES) == 5
    assert "tech" in ARTICLE_TYPES
    assert "life" in ARTICLE_TYPES


def test_article_fields():
    a = Article(
        slug="test-post",
        lang="it",
        path=Path("/blog/content/it/articles/test-post/index.md"),
        frontmatter={"title": "Test", "type": "Tech"},
        has_translation=False,
        translation_path=None,
    )
    assert a.slug == "test-post"
    assert a.lang == "it"
    assert a.has_translation is False
    assert a.translation_path is None


def test_article_with_translation():
    a = Article(
        slug="test-post",
        lang="it",
        path=Path("/blog/content/it/articles/test-post/index.md"),
        frontmatter={},
        has_translation=True,
        translation_path=Path("/blog/content/en/articles/test-post/index.md"),
    )
    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 == ""
