"""Config-parse тесты для own_developer_ids (#1169 PR1, ТЗ §25.3). Критично: own_developer_ids СТРОГО default [] (пусто), НИ ОДНОГО реального id в коде. OWN_DEVELOPER_IDS читается из env как comma-separated → list[int]; пусто/не задано → []. Пустой список = §25.3 own-portfolio деградирует изящно (proxy/None), а не падает. """ from __future__ import annotations from app.core.config import Settings def test_own_developer_ids_empty_by_default() -> None: """Default [] — ни одного id не зашито; §25.3 деградирует изящно без конфигурации.""" s = Settings(_env_file=None) # type: ignore[call-arg] assert s.own_developer_ids == [] def test_own_developer_ids_parses_comma_separated(monkeypatch) -> None: """'12345,67890,42' → [12345, 67890, 42] (fake-id, не реальные).""" monkeypatch.setenv("OWN_DEVELOPER_IDS", "12345,67890,42") s = Settings(_env_file=None) # type: ignore[call-arg] assert s.own_developer_ids == [12345, 67890, 42] def test_own_developer_ids_trims_whitespace_and_skips_empties(monkeypatch) -> None: """' 12345 , 67890 ,, ' → [12345, 67890] (trim + пропуск пустых токенов).""" monkeypatch.setenv("OWN_DEVELOPER_IDS", " 12345 , 67890 ,, ") s = Settings(_env_file=None) # type: ignore[call-arg] assert s.own_developer_ids == [12345, 67890] def test_own_developer_ids_empty_string_is_empty_list(monkeypatch) -> None: """Пустая строка env → [] (а не падение / [0]).""" monkeypatch.setenv("OWN_DEVELOPER_IDS", "") s = Settings(_env_file=None) # type: ignore[call-arg] assert s.own_developer_ids == [] def test_own_developer_ids_single_value(monkeypatch) -> None: """Один id без запятой → [12345].""" monkeypatch.setenv("OWN_DEVELOPER_IDS", "12345") s = Settings(_env_file=None) # type: ignore[call-arg] assert s.own_developer_ids == [12345] def test_own_developer_ids_accepts_list_input() -> None: """list-вход (JSON-env / прямая инициализация) нормализуется в list[int].""" s = Settings(_env_file=None, own_developer_ids=[12345, 67890]) # type: ignore[call-arg] assert s.own_developer_ids == [12345, 67890]