fix(subscription): grant one day for one-star plan

This commit is contained in:
admin committed 2026-10-29 20:00:26 +02:00
1 parent 60dc55a9b3
commit 26b533716a
3 files changed
+7 -16

No files matched your search

+1 -1
View File
@@ -1 +1 @@
0.1.0+71
0.1.0+72
+1 -11
View File
@@ -152,17 +152,7 @@ async def handle_successful_payment(message: Message) -> None:
return
if days == 0:
await asyncio.to_thread(
save_payment,
charge_id,
message.from_user.id,
payment.invoice_payload,
payment.currency,
payment.total_amount,
db_path,
)
await message.answer("Оплата 1 ⭐ получена. Срок подписки не изменён.")
return
days = 1
await asyncio.to_thread(ensure_subscription, message.from_user.id)
days_left = await asyncio.to_thread(activate_subscription_days, message.from_user.id, days)
+5 -4
View File
@@ -261,20 +261,21 @@ class SubscribeCommandTests(unittest.IsolatedAsyncioTestCase):
to_thread.assert_not_awaited()
callback.answer.assert_awaited_once_with("Dev-оплата подтверждена. Срок подписки не изменён.")
async def test_zero_day_plan_is_a_one_star_invoice_without_access_grant(self):
async def test_zero_day_plan_is_a_one_star_invoice_and_grants_one_day(self):
self.assertEqual(payments.plan_for_payload("sub:0:20261001120000"), (0, 1))
message = _paid_message(amount=1, payload="sub:0:20261001120000")
self.db = _db()
user_store.ensure_subscription(42, self.db)
with (
patch.dict(os.environ, {"BOT_DB_PATH": self.db}),
patch.object(payments.asyncio, "to_thread", new=_direct_thread_mock()),
patch.object(payments, "activate_subscription_days") as activate,
patch.object(payments, "activate_subscription_days", wraps=user_store.activate_subscription_days) as activate,
):
await payments.handle_successful_payment(message)
activate.assert_not_called()
activate.assert_called_once_with(42, 1)
self.assertTrue(payments.payment_recorded("charge1", self.db))
self.assertIn("Срок подписки не изменён", message.answers[0])
self.assertIn("Подписка активна", message.answers[0])
async def test_dev_confirmation_activates_selected_term_and_replies_with_status(self):
callback = AsyncMock()