gendesign/tradein-mvp/backend/tests/scrapers/test_price_brackets.py
bot-backend ffecc6962d
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
perf(tradein): shared EKB seed price-brackets across avito/cian/yandex (city-dict ready for multi-city)
2026-06-18 17:55:55 +03:00

48 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Тесты общего seed price-brackets констант (avito/cian/yandex)."""
from itertools import pairwise
from app.services.scrapers.price_brackets import (
_EKB_SECONDARY,
CITY_PRICE_SEED_BRACKETS,
get_price_seed_brackets,
)
def test_default_returns_ekb():
"""get_price_seed_brackets() без аргумента возвращает EKB-сетку."""
assert get_price_seed_brackets() == _EKB_SECONDARY
assert get_price_seed_brackets("ekaterinburg") == _EKB_SECONDARY
def test_unknown_city_falls_back_to_ekb():
"""Неизвестный город → fallback на EKB (не KeyError)."""
assert get_price_seed_brackets("atlantis") == _EKB_SECONDARY
def test_last_bracket_is_open():
"""Последний брекет ОТКРЫТ (hi=None) — catch-all хвоста люкса без потолка."""
brackets = get_price_seed_brackets()
assert brackets[-1][1] is None
# Только последний брекет открыт — остальные закрыты.
for lo, hi in brackets[:-1]:
assert hi is not None
assert hi > lo
def test_brackets_are_contiguous():
"""Закрытые брекеты соприкасаются: hi[i] == lo[i+1] (без дыр/перекрытий)."""
brackets = get_price_seed_brackets()
for (lo, hi), (next_lo, _next_hi) in pairwise(brackets):
assert hi == next_lo, f"разрыв между [{lo},{hi}] и [{next_lo},...]"
def test_first_bracket_starts_at_zero():
"""Первый брекет стартует с 0 (вся вторичка с нижнего края)."""
assert get_price_seed_brackets()[0][0] == 0
def test_city_dict_contains_ekaterinburg():
"""City-dict готов под multi-city — сейчас единственный ключ ekaterinburg."""
assert "ekaterinburg" in CITY_PRICE_SEED_BRACKETS
assert CITY_PRICE_SEED_BRACKETS["ekaterinburg"] is _EKB_SECONDARY