57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
import unittest
|
|
from datetime import date
|
|
|
|
from validation import validate_config
|
|
from generator import is_blocked_date
|
|
|
|
|
|
class DateSkippingTest(unittest.TestCase):
|
|
def test_blocked_week_is_skipped(self) -> None:
|
|
target_date = date(2026, 2, 6)
|
|
config = validate_config(
|
|
{
|
|
"start_date": "2026-02-04",
|
|
"start_time": "15:00",
|
|
"blocked_weeks": [target_date.isocalendar()[1]],
|
|
"blocked_dates": [],
|
|
"skip_day_after_ascension": False,
|
|
}
|
|
)
|
|
|
|
blocked, reason = is_blocked_date(target_date, {}, config)
|
|
self.assertTrue(blocked)
|
|
self.assertIn("Ferieuge", reason or "")
|
|
|
|
def test_blocked_date_is_skipped(self) -> None:
|
|
target_date = date(2026, 2, 6)
|
|
config = validate_config(
|
|
{
|
|
"start_date": "2026-02-04",
|
|
"start_time": "15:00",
|
|
"blocked_weeks": [],
|
|
"blocked_dates": ["02-06"],
|
|
"skip_day_after_ascension": False,
|
|
}
|
|
)
|
|
|
|
blocked, reason = is_blocked_date(target_date, {}, config)
|
|
self.assertTrue(blocked)
|
|
self.assertEqual(reason, "Manuelt blokeret dato")
|
|
|
|
def test_day_after_ascension_is_skipped(self) -> None:
|
|
target_date = date(2026, 5, 15)
|
|
config = validate_config(
|
|
{
|
|
"start_date": "2026-02-04",
|
|
"start_time": "15:00",
|
|
"blocked_weeks": [],
|
|
"blocked_dates": [],
|
|
"skip_day_after_ascension": True,
|
|
}
|
|
)
|
|
holidays = {date(2026, 5, 14): "Kristi Himmelfart"}
|
|
|
|
blocked, reason = is_blocked_date(target_date, holidays, config)
|
|
self.assertTrue(blocked)
|
|
self.assertEqual(reason, "Dagen efter Kr. Himmelfart")
|