44from model_bakery import baker
55
66from pythonpro .domain import checkout_domain
7+ from pythonpro .memberkit .models import SubscriptionType , Subscription , PaymentItemConfigToSubscriptionType
78
89
910@pytest .fixture
@@ -31,6 +32,9 @@ def test_pagarme_payment_paid_boleto(db, tag_as_mock, remove_tags_mock, promote_
3132 payment = baker .make (PagarmePayment , payment_method = facade .BOLETO , user = logged_user )
3233 baker .make (PagarmeNotification , status = facade .PAID , payment = payment )
3334 config = baker .make (PagarmeItemConfig , payments = [payment ])
35+ subscription_type = baker .make (SubscriptionType )
36+ PaymentItemConfigToSubscriptionType .objects .create (payment_item = config , subscription_type = subscription_type )
37+
3438 checkout_domain .payment_handler_task (payment .id )
3539 assert tag_as_mock .called is False
3640 remove_tags_mock .assert_called_once_with (
@@ -40,11 +44,31 @@ def test_pagarme_payment_paid_boleto(db, tag_as_mock, remove_tags_mock, promote_
4044 send_purchase_notification_mock .asser_called_once_with (payment .id )
4145
4246
47+ def test_subscription_creation (db , tag_as_mock , remove_tags_mock , promote_user_mock , logged_user ,
48+ send_purchase_notification_mock ):
49+ payment = baker .make (PagarmePayment , payment_method = facade .BOLETO , user = logged_user )
50+ baker .make (PagarmeNotification , status = facade .PAID , payment = payment )
51+ config = baker .make (PagarmeItemConfig , payments = [payment ])
52+ subscription_type = baker .make (SubscriptionType )
53+ PaymentItemConfigToSubscriptionType .objects .create (payment_item = config , subscription_type = subscription_type )
54+ checkout_domain .payment_handler_task (payment .id )
55+ subscription = Subscription .objects .first ()
56+ assert subscription is not None
57+ assert subscription .subscriber_id == payment .user_id
58+ assert subscription .status == Subscription .Status .INACTIVE
59+ assert subscription .payment_id == payment .id
60+ assert list (subscription .subscription_types .all ()) == [subscription_type ]
61+ assert subscription .responsible is None
62+ assert subscription .observation == 'Criação como resposta de pagamento no Pagarme'
63+
64+
4365def test_pagarme_payment_paid_credit_card (db , tag_as_mock , remove_tags_mock , promote_user_mock , logged_user ,
4466 send_purchase_notification_mock ):
4567 payment = baker .make (PagarmePayment , payment_method = facade .CREDIT_CARD , user = logged_user )
4668 baker .make (PagarmeNotification , status = facade .PAID , payment = payment )
4769 config = baker .make (PagarmeItemConfig , payments = [payment ])
70+ subscription_type = baker .make (SubscriptionType )
71+ PaymentItemConfigToSubscriptionType .objects .create (payment_item = config , subscription_type = subscription_type )
4872 checkout_domain .payment_handler_task (payment .id )
4973 assert tag_as_mock .called is False
5074 remove_tags_mock .assert_called_once_with (
0 commit comments