"""LOW audit R2 (#6) — `_clamp_plausible_date` в `scraper_kit.base`.

Choke point для `listing_date`/`publish_date` в `save_listings()` (единый для
avito/cian/yandex/domclick). Проверено в БД: avito пишет 1970-01-01
(epoch-sentinel, ~698 строк) и даты до +11 дней в будущем (~79 строк); у
yandex — единичные аномально старые годы. Правдоподобный диапазон —
[2010-01-01, today+2d]; всё остальное → None (колонка nullable).

Офлайн: без сети/curl_cffi/БД, только импорт + чистая функция.
"""

from __future__ import annotations

import os
from datetime import date, timedelta

os.environ.setdefault("DATABASE_URL", "postgresql+psycopg://test:test@localhost/test_db")

from scraper_kit.base import _clamp_plausible_date


def test_avito_epoch_sentinel_rejected() -> None:
    """1970-01-01 — классический Avito 0-epoch sentinel."""
    assert _clamp_plausible_date(date(1970, 1, 1)) is None


def test_just_before_min_plausible_rejected() -> None:
    assert _clamp_plausible_date(date(2009, 12, 31)) is None


def test_far_future_rejected() -> None:
    assert _clamp_plausible_date(date(2099, 1, 1)) is None


def test_none_passes_through_as_none() -> None:
    assert _clamp_plausible_date(None) is None


def test_normal_recent_date_passes_through() -> None:
    d = date(2024, 6, 1)
    assert _clamp_plausible_date(d) == d


def test_today_passes() -> None:
    today = date.today()
    assert _clamp_plausible_date(today) == today


def test_today_plus_one_day_passes() -> None:
    d = date.today() + timedelta(days=1)
    assert _clamp_plausible_date(d) == d


def test_today_plus_three_days_rejected() -> None:
    assert _clamp_plausible_date(date.today() + timedelta(days=3)) is None


def test_min_plausible_boundary_passes() -> None:
    """2010-01-01 сам по себе — граница включительно (в окне)."""
    assert _clamp_plausible_date(date(2010, 1, 1)) == date(2010, 1, 1)
