v2.0
This commit is contained in:
74
tests/test_bot_config_service.py
Normal file
74
tests/test_bot_config_service.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from app.config import Settings
|
||||
from app.services.bot_config_service import BotConfigService
|
||||
|
||||
|
||||
def _make_settings() -> Settings:
|
||||
return Settings.model_construct(
|
||||
bot_brand_name="OREOL VPN",
|
||||
bot_public_username="oreol_vpn_bot",
|
||||
bot_support_url="https://t.me/support_account",
|
||||
bot_terms_url="https://example.com/terms",
|
||||
bot_support_ticket_link="",
|
||||
bot_support_ticket_chat_id_raw="",
|
||||
bot_support_ticket_thread_id=0,
|
||||
bot_start_image_enabled=True,
|
||||
bot_start_image_path="assets/main.png",
|
||||
payment_review_link="",
|
||||
payment_review_chat_id_raw="",
|
||||
payment_review_thread_id=0,
|
||||
referral_discount_percent=5,
|
||||
referral_bonus_days=7,
|
||||
payment_plans_raw="30:250,180:600",
|
||||
payment_transfer_text="Реквизиты",
|
||||
payment_support_text="Напишите в поддержку",
|
||||
payment_plan_traffic_limit_gb=0,
|
||||
payment_plan_traffic_reset_period="NO_RESET",
|
||||
payment_internal_squad_uuids_raw="uuid-1",
|
||||
payment_external_squad_uuid="",
|
||||
payment_username_prefix="Oreol",
|
||||
payment_user_tag="BOT",
|
||||
)
|
||||
|
||||
|
||||
async def test_bot_config_service_updates_runtime_snapshot(session_factory) -> None:
|
||||
service = BotConfigService(
|
||||
settings=_make_settings(),
|
||||
session_factory=session_factory,
|
||||
)
|
||||
|
||||
await service.update_setting(
|
||||
key="bot_brand_name",
|
||||
raw_value="NEW BRAND",
|
||||
updated_by_telegram_id=1,
|
||||
)
|
||||
await service.update_setting(
|
||||
key="payment_plans_raw",
|
||||
raw_value="30:300,90:700",
|
||||
updated_by_telegram_id=1,
|
||||
)
|
||||
await service.update_setting(
|
||||
key="referral_enabled",
|
||||
raw_value="off",
|
||||
updated_by_telegram_id=1,
|
||||
)
|
||||
|
||||
snapshot = await service.get_snapshot()
|
||||
|
||||
assert snapshot.bot_brand_name == "NEW BRAND"
|
||||
assert snapshot.referral_enabled is False
|
||||
assert [(plan.days, plan.amount_rub) for plan in snapshot.payment_plans] == [
|
||||
(30, 300),
|
||||
(90, 700),
|
||||
]
|
||||
|
||||
|
||||
async def test_bot_config_service_formats_values_for_admin_ui(session_factory) -> None:
|
||||
service = BotConfigService(
|
||||
settings=_make_settings(),
|
||||
session_factory=session_factory,
|
||||
)
|
||||
snapshot = await service.get_snapshot()
|
||||
|
||||
assert BotConfigService.format_value(snapshot=snapshot, key="bot_public_username") == "@oreol_vpn_bot"
|
||||
assert BotConfigService.format_value(snapshot=snapshot, key="referral_enabled") == "on"
|
||||
assert BotConfigService.format_value(snapshot=snapshot, key="payment_plan_traffic_limit_gb") == "0 GB (unlimited)"
|
||||
Reference in New Issue
Block a user