From a68bdd1419150a98b4255ca6f7db6889e73b7aa0 Mon Sep 17 00:00:00 2001 From: Wolfgang Müller Date: Thu, 14 Nov 2024 20:12:19 +0100 Subject: backend/scraper: Add parser methods for Language We can expect a number of scraper sources to either give languages as ISO 639-3 or as their English name, so it makes sense to implement a simple parser method on our side. --- tests/scrapers/test_types.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'tests/scrapers/test_types.py') diff --git a/tests/scrapers/test_types.py b/tests/scrapers/test_types.py index ee6b802..33f9f89 100644 --- a/tests/scrapers/test_types.py +++ b/tests/scrapers/test_types.py @@ -2,6 +2,7 @@ from datetime import date import pytest +import hircine.enums as enums from hircine.api.types import ScrapedComic from hircine.scraper import ScrapeWarning from hircine.scraper.types import ( @@ -130,3 +131,35 @@ def test_scraped_comic_silently_ignores_empty(item, attr, empty): comic = ScrapedComic.from_generator(gen()) assert getattr(comic, attr) == empty + + +@pytest.mark.parametrize( + "input,want", + [ + ("EN", Language(value=enums.Language.EN)), + ("de", Language(value=enums.Language.DE)), + ], +) +def test_language_from_iso_639_3(input, want): + assert Language.from_iso_639_3(input) == want + + +def test_language_from_iso_639_3_fails(): + with pytest.raises(ScrapeWarning, match="Could not parse language code:"): + Language.from_iso_639_3("ENG") + + +@pytest.mark.parametrize( + "input,want", + [ + ("English", Language(value=enums.Language.EN)), + ("german", Language(value=enums.Language.DE)), + ], +) +def test_language_from_name(input, want): + assert Language.from_name(input) == want + + +def test_language_from_name_fails(): + with pytest.raises(ScrapeWarning, match="Could not parse language name:"): + Language.from_name("nonexistent") -- cgit v1.2.3-2-gb3c3