orgmode-to-gemini-blog/test_utils.py

59 lines
2.5 KiB
Python
Raw Permalink Normal View History

import pytest
2025-05-13 11:29:20 +02:00
from utils.utils import slugify_title, find_year_and_slug_on_filename, get_series_name
2025-05-13 10:41:40 +02:00
2025-05-13 11:29:20 +02:00
def find_serie_name_in_series():
"""Test que la fonction get_series_name retourne le nom de la série si l'article appartient à une série"""
found_serie = get_series_name("des-sauvegardes-qui-durent-mille-ans", "cipherbliss_blog")
assert found_serie == "workflows"
def do_not_find_serie_name_in_series():
"""Test que la fonction get_series_name retourne None si l'article n'appartient à aucune série"""
found_serie = get_series_name("des-sauvegardes-qui-durent-mille-ans", "tykayn_blog")
assert found_serie is None
2025-05-13 10:41:40 +02:00
def test_parse_file_slug_from_filename():
"""Test que slugify conserve les accents francophones"""
title = "20250125140244__dépasser-la-spécialisation.org"
expected = "dépasser-la-spécialisation"
date_str, annee, slug = find_year_and_slug_on_filename(title)
assert slug == expected, f"Expected '{expected}' but got '{slug}'"
def test_slug_without_accents():
2025-05-13 11:29:20 +02:00
"""Test le bon slug"""
2025-05-13 10:41:40 +02:00
title = "20111201T070237__dotclear-commenter-sans-tre-oblig-de-preview.org"
expected = "dotclear-commenter-sans-tre-oblig-de-preview"
date_str, annee, slug = find_year_and_slug_on_filename(title)
assert slug == expected, f"Expected '{expected}' but got '{slug}'"
def test_slugify_title_with_accents():
"""Test que slugify conserve les accents francophones"""
title = "Rétrospective du cul"
expected = "rétrospective-du-cul"
result = slugify_title(title)
assert result == expected, f"Expected '{expected}' but got '{result}'"
def test_slugify_title_various_cases():
"""Test slugify avec différents cas de figure"""
test_cases = [
("Hello World!", "hello-world"),
("L'été est là", "l-été-est-là"),
("100% Bio", "100-bio"),
("Spécial & Unique", "spécial-unique"),
("Multiple Spaces", "multiple-spaces"),
("émission télé", "émission-télé"),
("TOUT EN MAJUSCULES", "tout-en-majuscules"),
("mix OF cases", "mix-of-cases"),
("points...multiples...", "points-multiples"),
("Voilà l'été", "voilà-l-été"),
("Être ou ne pas être", "être-ou-ne-pas-être"),
("Ça c'est génial !", "ça-c-est-génial"),
]
for input_title, expected in test_cases:
result = slugify_title(input_title)
assert result == expected, f"Pour '{input_title}', attendu '{expected}' mais reçu '{result}'"
if __name__ == '__main__':
pytest.main([__file__])