mirror of
https://github.com/napnap75/multiarch-docker-images.git
synced 2026-11-11 00:22:12 +01:00
70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
"""Tests for configured-regex emission-date extraction."""
|
|
|
|
import re
|
|
import unittest
|
|
from types import SimpleNamespace
|
|
|
|
from app.pipeline import DocumentProcessor
|
|
from app.period import get_period_key_values
|
|
|
|
|
|
class EmissionDateExtractionTests(unittest.TestCase):
|
|
def processor(self, patterns):
|
|
processor = object.__new__(DocumentProcessor)
|
|
processor.registry = SimpleNamespace(
|
|
get_date_extraction_compiled=lambda: [re.compile(pattern) for pattern in patterns]
|
|
)
|
|
return processor
|
|
|
|
def test_uses_first_date_in_document_order_not_earliest_calendar_date(self):
|
|
processor = self.processor([
|
|
r"([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})",
|
|
r"([0-9]{4})-([0-9]{2})-([0-9]{2})",
|
|
])
|
|
date, error = processor._extract_emission_date(
|
|
"Issued 2025-02-03; reference date 01/01/2024"
|
|
)
|
|
self.assertIsNone(error)
|
|
self.assertEqual(date, "2025-02-03")
|
|
|
|
def test_normalizes_french_month_names(self):
|
|
processor = self.processor([
|
|
r"([0-9]{1,2}) (janvier|fevrier|mars|avril|mai|juin|juillet|aout|septembre|octobre|novembre|decembre) ([0-9]{4})"
|
|
])
|
|
date, error = processor._extract_emission_date("Émis le 1 janvier 2025")
|
|
self.assertIsNone(error)
|
|
self.assertEqual(date, "2025-01-01")
|
|
|
|
def test_does_not_fall_back_when_no_configured_regex_matches(self):
|
|
processor = self.processor([r"([0-9]{4})-([0-9]{2})-([0-9]{2})"])
|
|
date, error = processor._extract_emission_date("Date: 01/02/2025")
|
|
self.assertEqual(date, "")
|
|
self.assertIsNotNone(error)
|
|
|
|
|
|
class PeriodKeyPlaceholderTests(unittest.TestCase):
|
|
def test_key_values_use_the_computed_period_and_representative_day(self):
|
|
values = get_period_key_values(
|
|
"2026-01-20",
|
|
{"granularity": "month", "offset": "previous"},
|
|
)
|
|
|
|
self.assertEqual(
|
|
values,
|
|
{"year": "2025", "month": "12", "month_name": "Décembre", "day": "20"},
|
|
)
|
|
|
|
def test_key_pattern_renders_period_placeholders(self):
|
|
processor = object.__new__(DocumentProcessor)
|
|
|
|
key = processor._format_key_pattern(
|
|
"{year}/{month}/{month_name}/{day}/document.pdf",
|
|
**get_period_key_values("2026-09-20", {"granularity": "month"}),
|
|
)
|
|
|
|
self.assertEqual(key, "2026/09/Septembre/20/document.pdf")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|