feat: separate legacy tariff settings

This commit is contained in:
3252a8
2026-05-24 09:11:34 +03:00
parent 7f484fa7b3
commit 02b57ead00
2 changed files with 26 additions and 15 deletions
+7 -11
View File
@@ -230,33 +230,29 @@ SETTINGS_MANIFEST: List[SettingField] = [
"TRAFFIC_PACKAGES", "string", "pricing", "Пакеты трафика", "Формат: 10:199,50:799 (ГБ:цена)" "TRAFFIC_PACKAGES", "string", "pricing", "Пакеты трафика", "Формат: 10:199,50:799 (ГБ:цена)"
), ),
SettingField("STARS_TRAFFIC_PACKAGES", "string", "pricing", "Пакеты трафика (Stars)"), SettingField("STARS_TRAFFIC_PACKAGES", "string", "pricing", "Пакеты трафика (Stars)"),
SettingField(
"PAYMENT_METHODS_ORDER",
"string",
"pricing",
"Порядок методов оплаты",
"Через запятую, например: severpay,freekassa,yookassa,heleket",
),
SettingField( SettingField(
"SUBSCRIPTION_PURCHASE_DESCRIPTION_ENABLED", "SUBSCRIPTION_PURCHASE_DESCRIPTION_ENABLED",
"bool", "bool",
"pricing", "payments",
"Показывать описание подписки", "Показывать описание подписки",
"Текст появится перед выбором срока покупки или продления.", "Текст появится перед выбором срока покупки или продления.",
subsection="checkout",
), ),
SettingField( SettingField(
"SUBSCRIPTION_PURCHASE_DESCRIPTION_RU", "SUBSCRIPTION_PURCHASE_DESCRIPTION_RU",
"text", "text",
"pricing", "payments",
"Описание подписки (RU)", "Описание подписки (RU)",
"Русская версия текста на этапе оплаты.", "Русская версия текста на этапе оплаты.",
subsection="checkout",
), ),
SettingField( SettingField(
"SUBSCRIPTION_PURCHASE_DESCRIPTION_EN", "SUBSCRIPTION_PURCHASE_DESCRIPTION_EN",
"text", "text",
"pricing", "payments",
"Описание подписки (EN)", "Описание подписки (EN)",
"Английская версия текста на этапе оплаты.", "Английская версия текста на этапе оплаты.",
subsection="checkout",
), ),
# ─── Payment providers (toggles) ─────────────────────────────── # ─── Payment providers (toggles) ───────────────────────────────
# Common # Common
@@ -581,7 +577,7 @@ def manifest_payload() -> List[dict]:
sections_order = { sections_order = {
"general": 1, "general": 1,
"appearance": 2, "appearance": 2,
"pricing": 3, "pricing": 11,
"payments": 4, "payments": 4,
"trial": 5, "trial": 5,
"referral": 6, "referral": 6,
+19 -4
View File
@@ -36,6 +36,10 @@ def _manifest_by_key() -> dict[str, dict]:
return {item["key"]: item for item in manifest_payload()} return {item["key"]: item for item in manifest_payload()}
def _manifest_items() -> list[dict]:
return manifest_payload()
def _locale(language: str) -> dict[str, str]: def _locale(language: str) -> dict[str, str]:
return json.loads((REPO_ROOT / "locales" / f"{language}.json").read_text(encoding="utf-8")) return json.loads((REPO_ROOT / "locales" / f"{language}.json").read_text(encoding="utf-8"))
@@ -74,7 +78,8 @@ def test_subscription_purchase_description_settings_i18n_keys_exist():
messages = _locale(language) messages = _locale(language)
for setting_key in SUBSCRIPTION_PURCHASE_DESCRIPTION_SETTINGS: for setting_key in SUBSCRIPTION_PURCHASE_DESCRIPTION_SETTINGS:
field = manifest[setting_key] field = manifest[setting_key]
assert field["section"] == "pricing" assert field["section"] == "payments"
assert field["subsection"] == "checkout"
assert field["i18n_label_key"] in messages assert field["i18n_label_key"] in messages
assert field["i18n_description_key"] in messages assert field["i18n_description_key"] in messages
@@ -106,12 +111,22 @@ def test_payment_provider_settings_include_webhook_metadata():
assert "webhook_path" not in manifest["PAYMENT_STARS_WEBAPP_LABEL_RU"] assert "webhook_path" not in manifest["PAYMENT_STARS_WEBAPP_LABEL_RU"]
def test_legacy_tariff_settings_are_separated_from_payment_settings():
manifest = _manifest_by_key()
payment_method_fields = [
item for item in _manifest_items() if item["key"] == "PAYMENT_METHODS_ORDER"
]
assert len(payment_method_fields) == 1
assert payment_method_fields[0]["section"] == "payments"
assert manifest["MONTH_1_ENABLED"]["section"] == "pricing"
assert manifest["MONTH_1_ENABLED"]["section_order"] == 11
def test_platega_settings_share_one_admin_subsection(): def test_platega_settings_share_one_admin_subsection():
manifest = _manifest_by_key() manifest = _manifest_by_key()
platega_keys = [ platega_keys = [
key key for key in manifest if key.startswith("PLATEGA_") or key.startswith("PAYMENT_PLATEGA_")
for key in manifest
if key.startswith("PLATEGA_") or key.startswith("PAYMENT_PLATEGA_")
] ]
assert platega_keys assert platega_keys