22 lines
805 B
Python
22 lines
805 B
Python
import pytest
|
|
from pydantic import ValidationError
|
|
|
|
from app.community_scheduler import MAX_BACKOFF_SECONDS, configured_sources, retry_delay
|
|
from app.config import Settings
|
|
|
|
|
|
def test_all_authorized_sources_are_scheduled() -> None:
|
|
assert set(configured_sources()) == {"rf4db", "rf4stat-fishing", "rf4stat-post", "rf4map", "rf4posts-spot"}
|
|
|
|
|
|
def test_community_interval_cannot_be_less_than_30_minutes() -> None:
|
|
with pytest.raises(ValidationError):
|
|
Settings(community_import_interval_seconds=1799)
|
|
|
|
|
|
def test_failed_runs_back_off_but_success_resets_delay() -> None:
|
|
assert retry_delay(["failed"]) == 1800
|
|
assert retry_delay(["failed", "failed", "failed"]) == 7200
|
|
assert retry_delay(["failed"] * 20) == MAX_BACKOFF_SECONDS
|
|
assert retry_delay(["success", "failed"]) == 1800
|