fix(subscription): grant one day for one-star plan
This commit is contained in:
1 parent
60dc55a9b3
commit
26b533716a
3 files changed
+7
-16
No files matched your search
+1
-11
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user