fix: assign default tariff to promo bonuses
This commit is contained in:
@@ -532,6 +532,72 @@ class SubscriptionServiceActivationDispatchTests(unittest.IsolatedAsyncioTestCas
|
||||
|
||||
|
||||
class SubscriptionServiceBonusExtensionTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_promo_bonus_without_active_subscription_uses_default_tariff_squads(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
settings = _make_settings(
|
||||
_tariffs_config_payload(),
|
||||
tmpdir,
|
||||
USER_TRAFFIC_LIMIT_GB=999,
|
||||
USER_EXTERNAL_SQUAD_UUID="external-squad",
|
||||
)
|
||||
service = _make_service(settings)
|
||||
service._get_or_create_panel_user_link_details = AsyncMock(
|
||||
return_value=("panel-user", "short-uuid", "short", False)
|
||||
)
|
||||
service.panel_service.update_user_details_on_panel = AsyncMock(
|
||||
return_value={"ok": True}
|
||||
)
|
||||
updated_sub = SimpleNamespace(
|
||||
subscription_id=10,
|
||||
end_date=datetime.now(timezone.utc) + timedelta(days=7),
|
||||
traffic_limit_bytes=100 * GIB,
|
||||
tariff_key="standard",
|
||||
hwid_device_limit=3,
|
||||
)
|
||||
|
||||
with (
|
||||
patch(
|
||||
"bot.services.subscription_service_impl.lifecycle.user_dal.get_user_by_id",
|
||||
AsyncMock(return_value=SimpleNamespace(user_id=42)),
|
||||
),
|
||||
patch(
|
||||
"bot.services.subscription_service_impl.lifecycle.subscription_dal.get_active_subscription_by_user_id",
|
||||
AsyncMock(return_value=None),
|
||||
),
|
||||
patch(
|
||||
"bot.services.subscription_service_impl.lifecycle.subscription_dal.deactivate_other_active_subscriptions",
|
||||
AsyncMock(),
|
||||
),
|
||||
patch(
|
||||
"bot.services.subscription_service_impl.lifecycle.subscription_dal.upsert_subscription",
|
||||
AsyncMock(return_value=updated_sub),
|
||||
) as upsert_subscription,
|
||||
):
|
||||
await service.extend_active_subscription_days(
|
||||
session=AsyncMock(),
|
||||
user_id=42,
|
||||
bonus_days=7,
|
||||
reason="promo code HELLO",
|
||||
tariff_key="standard",
|
||||
)
|
||||
|
||||
sub_payload = upsert_subscription.await_args.args[1]
|
||||
self.assertEqual(sub_payload["tariff_key"], "standard")
|
||||
self.assertEqual(sub_payload["traffic_limit_bytes"], 100 * GIB)
|
||||
self.assertEqual(sub_payload["tier_baseline_bytes"], 100 * GIB)
|
||||
self.assertEqual(sub_payload["premium_baseline_bytes"], 25 * GIB)
|
||||
self.assertEqual(sub_payload["hwid_device_limit"], 3)
|
||||
|
||||
panel_payload = service.panel_service.update_user_details_on_panel.await_args.args[1]
|
||||
self.assertEqual(panel_payload["trafficLimitBytes"], 100 * GIB)
|
||||
self.assertEqual(panel_payload["trafficLimitStrategy"], "MONTH")
|
||||
self.assertEqual(panel_payload["hwidDeviceLimit"], 3)
|
||||
self.assertEqual(
|
||||
panel_payload["activeInternalSquads"],
|
||||
["main-squad", "shared-squad", "premium-squad"],
|
||||
)
|
||||
self.assertEqual(panel_payload["externalSquadUuid"], "external-squad")
|
||||
|
||||
async def test_referral_extension_preserves_existing_tariff_limit(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
settings = _make_settings(
|
||||
|
||||
Reference in New Issue
Block a user