app/tests/test_paddle_callback.py
Adrià Casajús faaff7e9b9
Handle failed payments subscriptions in paddle (#1327)
* Handle failed payments subscriptions in paddle

* Added tests

* Remove unused import

* Remove unused import

Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
2022-09-30 17:51:06 +02:00

33 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