* Handle failed payments subscriptions in paddle * Added tests * Remove unused import * Remove unused import Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
34 lines
1 KiB
Python
34 lines
1 KiB
Python
import arrow
|
|
|
|
from app import paddle_callback
|
|
from app.db import Session
|
|
from app.mail_sender import mail_sender
|
|
from app.models import Subscription, PlanEnum
|
|
from tests.utils import create_new_user, random_token
|
|
|
|
|
|
@mail_sender.store_emails_test_decorator
|
|
def test_failed_payments():
|
|
user = create_new_user()
|
|
paddle_sub_id = random_token()
|
|
sub = Subscription.create(
|
|
user_id=user.id,
|
|
cancel_url="https://checkout.paddle.com/subscription/cancel?user=1234",
|
|
update_url="https://checkout.paddle.com/subscription/update?user=1234",
|
|
subscription_id=paddle_sub_id,
|
|
event_time=arrow.now(),
|
|
next_bill_date=arrow.now().shift(days=10).date(),
|
|
plan=PlanEnum.monthly,
|
|
commit=True,
|
|
)
|
|
Session.commit()
|
|
|
|
paddle_callback.failed_payment(sub, paddle_sub_id)
|
|
|
|
sub = Subscription.get_by(subscription_id=paddle_sub_id)
|
|
assert sub.cancelled
|
|
|
|
assert 1 == len(mail_sender.get_stored_emails())
|
|
mail_sent = mail_sender.get_stored_emails()[0]
|
|
assert mail_sent.envelope_to == user.email
|