refactor: move yookassa env-config into module
This commit is contained in:
+10
-1
@@ -393,12 +393,21 @@ class AdminSettingsSecurityTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def __aexit__(self, exc_type, exc, tb):
|
||||
return False
|
||||
|
||||
from bot.payment_providers import (
|
||||
build_provider_configs,
|
||||
get_provider_bundle,
|
||||
)
|
||||
|
||||
build_provider_configs()
|
||||
bundle = get_provider_bundle("yookassa_service")
|
||||
if bundle and bundle.config is not None:
|
||||
bundle.config.SECRET_KEY = "super-secret"
|
||||
|
||||
settings = Settings(
|
||||
_env_file=None,
|
||||
BOT_TOKEN="token",
|
||||
POSTGRES_USER="app_user",
|
||||
POSTGRES_PASSWORD="app_password",
|
||||
YOOKASSA_SECRET_KEY="super-secret",
|
||||
SHOP_NAME="Visible shop",
|
||||
)
|
||||
request = SimpleNamespace(
|
||||
|
||||
+31
-18
@@ -153,25 +153,38 @@ class SettingsTests(unittest.TestCase):
|
||||
self.assertEqual(settings.TRIAL_TRAFFIC_STRATEGY, "WEEK")
|
||||
|
||||
def test_payment_button_presentation_env_values_are_available(self):
|
||||
settings = Settings(
|
||||
_env_file=None,
|
||||
BOT_TOKEN="token",
|
||||
POSTGRES_USER="app_user",
|
||||
POSTGRES_PASSWORD="app_password",
|
||||
PAYMENT_YOOKASSA_WEBAPP_LABEL_RU="Карта",
|
||||
PAYMENT_YOOKASSA_WEBAPP_LABEL_EN="Card",
|
||||
PAYMENT_YOOKASSA_WEBAPP_ICON="CreditCard",
|
||||
PAYMENT_YOOKASSA_TELEGRAM_LABEL_RU="Банковская карта",
|
||||
PAYMENT_YOOKASSA_TELEGRAM_LABEL_EN="Bank card",
|
||||
PAYMENT_YOOKASSA_TELEGRAM_EMOJI="💳",
|
||||
)
|
||||
"""Presentation overrides now live on each provider's BaseSettings
|
||||
model instead of the central Settings — verify they're loaded from
|
||||
env and exposed via the provider bundle."""
|
||||
import os
|
||||
from bot.payment_providers import build_provider_configs, get_spec_presentation
|
||||
|
||||
self.assertEqual(settings.PAYMENT_YOOKASSA_WEBAPP_LABEL_RU, "Карта")
|
||||
self.assertEqual(settings.PAYMENT_YOOKASSA_WEBAPP_LABEL_EN, "Card")
|
||||
self.assertEqual(settings.PAYMENT_YOOKASSA_WEBAPP_ICON, "CreditCard")
|
||||
self.assertEqual(settings.PAYMENT_YOOKASSA_TELEGRAM_LABEL_RU, "Банковская карта")
|
||||
self.assertEqual(settings.PAYMENT_YOOKASSA_TELEGRAM_LABEL_EN, "Bank card")
|
||||
self.assertEqual(settings.PAYMENT_YOOKASSA_TELEGRAM_EMOJI, "💳")
|
||||
os.environ["PAYMENT_YOOKASSA_WEBAPP_LABEL_RU"] = "Карта"
|
||||
os.environ["PAYMENT_YOOKASSA_WEBAPP_LABEL_EN"] = "Card"
|
||||
os.environ["PAYMENT_YOOKASSA_WEBAPP_ICON"] = "CreditCard"
|
||||
os.environ["PAYMENT_YOOKASSA_TELEGRAM_LABEL_RU"] = "Банковская карта"
|
||||
os.environ["PAYMENT_YOOKASSA_TELEGRAM_LABEL_EN"] = "Bank card"
|
||||
os.environ["PAYMENT_YOOKASSA_TELEGRAM_EMOJI"] = "💳"
|
||||
try:
|
||||
build_provider_configs()
|
||||
presentation = get_spec_presentation("yookassa")
|
||||
self.assertIsNotNone(presentation)
|
||||
self.assertEqual(presentation.WEBAPP_LABEL_RU, "Карта")
|
||||
self.assertEqual(presentation.WEBAPP_LABEL_EN, "Card")
|
||||
self.assertEqual(presentation.WEBAPP_ICON, "CreditCard")
|
||||
self.assertEqual(presentation.TELEGRAM_LABEL_RU, "Банковская карта")
|
||||
self.assertEqual(presentation.TELEGRAM_LABEL_EN, "Bank card")
|
||||
self.assertEqual(presentation.TELEGRAM_EMOJI, "💳")
|
||||
finally:
|
||||
for key in (
|
||||
"PAYMENT_YOOKASSA_WEBAPP_LABEL_RU",
|
||||
"PAYMENT_YOOKASSA_WEBAPP_LABEL_EN",
|
||||
"PAYMENT_YOOKASSA_WEBAPP_ICON",
|
||||
"PAYMENT_YOOKASSA_TELEGRAM_LABEL_RU",
|
||||
"PAYMENT_YOOKASSA_TELEGRAM_LABEL_EN",
|
||||
"PAYMENT_YOOKASSA_TELEGRAM_EMOJI",
|
||||
):
|
||||
os.environ.pop(key, None)
|
||||
|
||||
def test_tariff_warning_levels_are_parsed(self):
|
||||
settings = Settings(
|
||||
|
||||
@@ -371,6 +371,22 @@ class WebAppAssetTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertEqual(methods, [])
|
||||
|
||||
def test_serialize_payment_methods_includes_provider_presentation(self):
|
||||
from bot.payment_providers import (
|
||||
build_provider_configs,
|
||||
get_provider_bundle,
|
||||
get_spec_presentation,
|
||||
)
|
||||
|
||||
build_provider_configs()
|
||||
bundle = get_provider_bundle("yookassa_service")
|
||||
if bundle and bundle.config is not None:
|
||||
bundle.config.ENABLED = True
|
||||
presentation = get_spec_presentation("yookassa")
|
||||
if presentation is not None:
|
||||
presentation.WEBAPP_LABEL_RU = "Карта"
|
||||
presentation.WEBAPP_LABEL_EN = "Bank card"
|
||||
presentation.WEBAPP_ICON = "WalletCards"
|
||||
|
||||
settings = Settings(
|
||||
_env_file=None,
|
||||
BOT_TOKEN="token",
|
||||
@@ -378,10 +394,6 @@ class WebAppAssetTests(unittest.IsolatedAsyncioTestCase):
|
||||
POSTGRES_PASSWORD="app_password",
|
||||
TARIFFS_CONFIG_PATH="missing-tariffs.json",
|
||||
PAYMENT_METHODS_ORDER="yookassa",
|
||||
YOOKASSA_ENABLED=True,
|
||||
PAYMENT_YOOKASSA_WEBAPP_LABEL_RU="Карта",
|
||||
PAYMENT_YOOKASSA_WEBAPP_LABEL_EN="Bank card",
|
||||
PAYMENT_YOOKASSA_WEBAPP_ICON="WalletCards",
|
||||
)
|
||||
app = {"yookassa_service": SimpleNamespace(configured=True)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user