Private
Public Access
1
0

got a little further - still failing

This commit is contained in:
Sander Roosendaal
2019-01-15 19:09:12 +01:00
parent 60c7219134
commit 80c04ee9bb
4 changed files with 137 additions and 122 deletions

View File

@@ -43,6 +43,7 @@ else:
) )
) )
from rowers.models import Rower,PaidPlan from rowers.models import Rower,PaidPlan
from rowers.utils import ProcessorCustomerError from rowers.utils import ProcessorCustomerError
@@ -208,6 +209,9 @@ def update_subscription(rower,data,method='up'):
def create_subscription(rower,data): def create_subscription(rower,data):
planid = data['plan'] planid = data['plan']
plan = PaidPlan.objects.get(id=planid) plan = PaidPlan.objects.get(id=planid)
print plan
print data
raise ValueError
nonce_from_the_client = data['payment_method_nonce'] nonce_from_the_client = data['payment_method_nonce']
amount = data['amount'] amount = data['amount']
@@ -217,22 +221,18 @@ def create_subscription(rower,data):
"payment_method_nonce": nonce_from_the_client "payment_method_nonce": nonce_from_the_client
}) })
print 'aap'
if result.is_success: if result.is_success:
payment_method_token = result.payment_method.token payment_method_token = result.payment_method.token
else: else:
return False,0 return False,0
print 'noot'
result = gateway.subscription.create({ result = gateway.subscription.create({
"payment_method_token": payment_method_token, "payment_method_token": payment_method_token,
"plan_id": plan.external_id "plan_id": plan.external_id
}) })
if result.is_success: if result.is_success:
print 'mies'
rower.paidplan = plan rower.paidplan = plan
rower.planexpires = result.subscription.billing_period_end_date rower.planexpires = result.subscription.billing_period_end_date
rower.teamplanexpires = result.subscription.billing_period_end_date rower.teamplanexpires = result.subscription.billing_period_end_date

View File

@@ -172,7 +172,8 @@ class MockStravalibClient():
def update_activity(*args, **kwargs): def update_activity(*args, **kwargs):
return StravaActivity() return StravaActivity()
class gatewayresult(): def mocked_gateway(*args, **kwargs):
class gatewayresult():
def __init__(self,*args,**kwargs): def __init__(self,*args,**kwargs):
self.is_success = kwargs.pop('is_success',True) self.is_success = kwargs.pop('is_success',True)
self.customer_id = 1 self.customer_id = 1
@@ -180,16 +181,19 @@ class gatewayresult():
self.payment_method = payment_method() self.payment_method = payment_method()
self.subscription = vsubscription() self.subscription = vsubscription()
class credit_card(): def __unicode__():
return "mockedgatewayresult"
class credit_card():
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.subscriptions = [vsubscription()] self.subscriptions = [vsubscription()]
self.country_of_issuance = 'US' self.country_of_issuance = 'US'
class paypal_account(): class paypal_account():
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.subscriptions = [vsubscription(),vsubscription()] self.subscriptions = [vsubscription(),vsubscription()]
class customer(): class customer():
def find(*arg, **kwargs): def find(*arg, **kwargs):
return self return self
@@ -200,17 +204,17 @@ class customer():
self.credit_cards = [credit_card(),credit_card()] self.credit_cards = [credit_card(),credit_card()]
self.paypal_accounts = [paypal_account()] self.paypal_accounts = [paypal_account()]
class client_token(): class client_token():
def generate(*args, **kwargs): def generate(*args, **kwargs):
return 'aapnooit' return 'aapnooit'
class plan(): class plan():
def all(*args, **kwargs): def all(*args, **kwargs):
return [] return []
class transaction(): class transaction():
def sale(*args, **kwargs): def sale(*args, **kwargs):
return gatewayresult(is_success=True) return gatewayresult(is_success=True)
@@ -228,7 +232,7 @@ class transaction():
self.created_at = datetime.datetime.now() self.created_at = datetime.datetime.now()
self.currency_iso_code = 'EUR' self.currency_iso_code = 'EUR'
class vtransaction(): class vtransaction():
def __init__(self,*args, **kwargs): def __init__(self,*args, **kwargs):
self.amount = 15 self.amount = 15
self.credit_card_details = credit_card() self.credit_card_details = credit_card()
@@ -240,12 +244,13 @@ class vtransaction():
self.created_at = datetime.datetime.now() self.created_at = datetime.datetime.now()
self.currency_iso_code = 'EUR' self.currency_iso_code = 'EUR'
class vsubscription(): class vsubscription():
def update(*args, **kwargs): def update(*args, **kwargs):
print 'aap vsubscription'
return gatewayresult(is_success=True) return gatewayresult(is_success=True)
def cancel(*args, **kwargs): def cancel(*args, **kwargs):
return gatewayresult() return gatewayresult(is_success=True)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.id = 121 self.id = 121
@@ -255,15 +260,16 @@ class vsubscription():
self.price = 15 self.price = 15
self.never_expires = True self.never_expires = True
class subscription(): class subscription():
def create(*args, **kwargs): def create(*args, **kwargs):
print 'aap subscription'
return gatewayresult(is_success=True) return gatewayresult(is_success=True)
def update(*args, **kwargs): def update(*args, **kwargs):
return gatewayresult(is_success=True) return gatewayresult(is_success=True)
def cancel(*args, **kwargs): def cancel(*args, **kwargs):
return gatewayresult() return gatewayresult(is_success=True)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.id = 121 self.id = 121
@@ -275,15 +281,15 @@ class subscription():
self.never_expires = True self.never_expires = True
class payment_method(): class payment_method():
def create(*args, **kwargs): def create(*args, **kwargs):
return gatewayresult() return gatewayresult()
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.token = 'liesjeleerdelotje' self.token = 'liesjeleerdelotje'
# mock braintree gateway # mock braintree gateway
class MockBraintreeGateway(): class MockBraintreeGateway():
def __init__(self,*args, **kwargs): def __init__(self,*args, **kwargs):
self.customer = customer() self.customer = customer()
self.client_token = client_token() self.client_token = client_token()

View File

@@ -19,46 +19,54 @@ class PaymentTest(TestCase):
country = faker.country(), country = faker.country(),
) )
p = PaidPlan( # settings.DEBUG = True
p1 = PaidPlan(
shortname='free', shortname='free',
name='Basic', name='Basic',
external_id='a', external_id='a',
price=0, price=0,
clubsize=0,
paymentprocessor='braintree', paymentprocessor='braintree',
paymenttype='single', paymenttype='single',
) )
p.save() p1.save()
p = PaidPlan( p2 = PaidPlan(
shortname='pro_recurring', shortname='pro_recurring',
name='Pro (recurring)', name='Pro (recurring)',
external_id='b', external_id='b',
price=15, price=15,
clubsize=0,
paymentprocessor='braintree', paymentprocessor='braintree',
paymenttype='single', paymenttype='single',
) )
p.save() p2.save()
p = PaidPlan( p3 = PaidPlan(
shortname='pro_single', shortname='pro_single',
name='Pro (single)', name='Pro (single)',
external_id='c', external_id='c',
price=20, price=20,
clubsize=0,
paymentprocessor='braintree', paymentprocessor='braintree',
paymenttype='single', paymenttype='single',
) )
p.save() p3.save()
self.c = Client() self.c = Client()
self.password = faker.word() self.password = faker.word()
self.u.set_password(self.password) self.u.set_password(self.password)
self.u.save() self.u.save()
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway) # def tearDown(self):
def test_billing_view(self,mock_gateway): # settings.DEBUG = False
@patch('rowers.braintreestuff.gateway',side_effect=mocked_gateway)
def test_billing_view(self,MockBraintreeGateway):
login = self.c.login(username=self.u.username, password=self.password) login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login) self.assertTrue(login)
@@ -99,8 +107,8 @@ class PaymentTest(TestCase):
expected_url = expected_url, expected_url = expected_url,
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway) @patch('rowers.braintreestuff.gateway',side_effect=mocked_gateway)
def test_upgrade_view(self,mock_gateway): def test_upgrade_view(self,MockBraintreeGateway):
self.r.country = 'NL' self.r.country = 'NL'
self.r.customer_id = 34 self.r.customer_id = 34
self.r.subscription_id = 34 self.r.subscription_id = 34
@@ -146,8 +154,8 @@ class PaymentTest(TestCase):
expected_url = expected_url, expected_url = expected_url,
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway) @patch('rowers.braintreestuff.gateway',side_effect=mocked_gateway)
def test_down_view(self,mock_gateway): def test_down_view(self,MockBraintreeGateway):
self.r.country = 'NL' self.r.country = 'NL'
self.r.customer_id = 34 self.r.customer_id = 34
self.r.subscription_id = 34 self.r.subscription_id = 34
@@ -196,8 +204,8 @@ class PaymentTest(TestCase):
expected_url = expected_url, expected_url = expected_url,
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway) @patch('rowers.braintreestuff.gateway',side_effect=mocked_gateway)
def test_planstop_view(self,mock_gateway): def test_planstop_view(self,MockBraintreeGateway):
self.r.country = 'NL' self.r.country = 'NL'
self.r.customer_id = 34 self.r.customer_id = 34
self.r.subscription_id = 34 self.r.subscription_id = 34
@@ -218,8 +226,8 @@ class PaymentTest(TestCase):
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway) @patch('rowers.braintreestuff.gateway',side_effect=mocked_gateway)
def test_planstobasic_view(self,mock_gateway): def test_planstobasic_view(self,MockBraintreeGateway):
self.r.country = 'NL' self.r.country = 'NL'
self.r.customer_id = 34 self.r.customer_id = 34
self.r.subscription_id = 34 self.r.subscription_id = 34
@@ -242,8 +250,8 @@ class PaymentTest(TestCase):
expected_url = '/rowers/me/cancelsubscriptions/', expected_url = '/rowers/me/cancelsubscriptions/',
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway) @patch('rowers.braintreestuff.gateway',side_effect=mocked_gateway)
def test_checkouts_view(self,mock_gateway): def test_checkouts_view(self,MockBraintreeGateway):
plans = PaidPlan.objects.all().order_by('price') plans = PaidPlan.objects.all().order_by('price')
plan = plans[1] plan = plans[1]

View File

@@ -1040,7 +1040,7 @@ def ispromember(user):
if not user.is_anonymous(): if not user.is_anonymous():
try: try:
r = Rower.objects.get(user=user) r = Rower.objects.get(user=user)
except Rower.DoesNotExists: except Rower.DoesNotExist:
r = Rower(user=user) r = Rower(user=user)
r.save() r.save()
@@ -1381,6 +1381,7 @@ def checkouts_view(request):
form = BillingForm(request.POST) form = BillingForm(request.POST)
if form.is_valid(): if form.is_valid():
data = form.cleaned_data data = form.cleaned_data
print r
success,amount = braintreestuff.create_subscription(r,data) success,amount = braintreestuff.create_subscription(r,data)
if success: if success:
messages.info(request,"Your payment has succeeded and your plan has been updated") messages.info(request,"Your payment has succeeded and your plan has been updated")