adding some tests on payments, not passing yet
This commit is contained in:
@@ -172,7 +172,127 @@ class MockStravalibClient():
|
||||
def update_activity(*args, **kwargs):
|
||||
return StravaActivity()
|
||||
|
||||
class gatewayresult():
|
||||
def __init__(self,*args,**kwargs):
|
||||
self.is_success = kwargs.pop('is_success',True)
|
||||
self.customer_id = 1
|
||||
self.transaction = vtransaction()
|
||||
self.payment_method = payment_method()
|
||||
self.subscription = vsubscription()
|
||||
|
||||
class credit_card():
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.subscriptions = [vsubscription()]
|
||||
self.country_of_issuance = 'US'
|
||||
|
||||
class paypal_account():
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.subscriptions = [vsubscription(),vsubscription()]
|
||||
|
||||
class customer():
|
||||
def find(*arg, **kwargs):
|
||||
return self
|
||||
|
||||
def create(*args, **kwargs):
|
||||
return gatewayresult(is_success=True)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.credit_cards = [credit_card(),credit_card()]
|
||||
self.paypal_accounts = [paypal_account()]
|
||||
|
||||
class client_token():
|
||||
def generate(*args, **kwargs):
|
||||
return 'aapnooit'
|
||||
|
||||
class plan():
|
||||
def all(*args, **kwargs):
|
||||
return []
|
||||
|
||||
|
||||
|
||||
class transaction():
|
||||
def sale(*args, **kwargs):
|
||||
return gatewayresult(is_success=True)
|
||||
|
||||
def search(*args, **kwargs):
|
||||
return [gatewayresult(is_success=True),gatewayresult(is_success=True)]
|
||||
|
||||
def __init__(self,*args, **kwargs):
|
||||
self.amount = 15
|
||||
self.credit_card_details = credit_card()
|
||||
self.customer = {
|
||||
'first_name': 'John',
|
||||
'last_name': 'Doe',
|
||||
'id': 12
|
||||
}
|
||||
self.created_at = datetime.datetime.now()
|
||||
self.currency_iso_code = 'EUR'
|
||||
|
||||
class vtransaction():
|
||||
def __init__(self,*args, **kwargs):
|
||||
self.amount = 15
|
||||
self.credit_card_details = credit_card()
|
||||
self.customer = {
|
||||
'first_name': 'John',
|
||||
'last_name': 'Doe',
|
||||
'id': 12
|
||||
}
|
||||
self.created_at = datetime.datetime.now()
|
||||
self.currency_iso_code = 'EUR'
|
||||
|
||||
class vsubscription():
|
||||
def update(*args, **kwargs):
|
||||
return gatewayresult(is_success=True)
|
||||
|
||||
def cancel(*args, **kwargs):
|
||||
return gatewayresult()
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.id = 121
|
||||
self.billing_period_end_date = (datetime.datetime.now()+datetime.timedelta(days=365)).date()
|
||||
self.status = 'Active'
|
||||
self.plan_id = 12
|
||||
self.price = 15
|
||||
self.never_expires = True
|
||||
|
||||
class subscription():
|
||||
def create(*args, **kwargs):
|
||||
return gatewayresult(is_success=True)
|
||||
|
||||
def update(*args, **kwargs):
|
||||
return gatewayresult(is_success=True)
|
||||
|
||||
def cancel(*args, **kwargs):
|
||||
return gatewayresult()
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.id = 121
|
||||
self.billing_period_end_date = (datetime.datetime.now()+datetime.timedelta(days=365)).date()
|
||||
self.transactions = [vtransaction()]
|
||||
self.status = 'Active'
|
||||
self.plan_id = 12
|
||||
self.price = 15
|
||||
self.never_expires = True
|
||||
|
||||
|
||||
class payment_method():
|
||||
def create(*args, **kwargs):
|
||||
return gatewayresult()
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.token = 'liesjeleerdelotje'
|
||||
|
||||
# mock braintree gateway
|
||||
class MockBraintreeGateway():
|
||||
def __init__(self,*args, **kwargs):
|
||||
self.customer = customer()
|
||||
self.client_token = client_token()
|
||||
self.plan = plan()
|
||||
self.transaction = transaction()
|
||||
self.subscription = subscription()
|
||||
self.payment_method = payment_method()
|
||||
|
||||
|
||||
class mocked_rowingdata(rowingdata):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(mocked_rowingdata).__init__(*args, **kwargs)
|
||||
|
||||
@@ -17,3 +17,6 @@ class TestErrorPages(TestCase):
|
||||
self.assertEqual(response.status_code, 500)
|
||||
self.assertIn('500 Internal Server Error', unicode(response))
|
||||
|
||||
response = error400_view(request)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
|
||||
270
rowers/tests/test_payments.py
Normal file
270
rowers/tests/test_payments.py
Normal file
@@ -0,0 +1,270 @@
|
||||
from statements import *
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
from django_countries import countries
|
||||
|
||||
class PaymentTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach',
|
||||
paymentprocessor='braintree',
|
||||
street_address = faker.street_address(),
|
||||
city = faker.city(),
|
||||
postal_code = faker.postalcode(),
|
||||
country = faker.country(),
|
||||
)
|
||||
|
||||
p = PaidPlan(
|
||||
shortname='free',
|
||||
name='Basic',
|
||||
external_id='a',
|
||||
price=0,
|
||||
paymentprocessor='braintree',
|
||||
paymenttype='single',
|
||||
)
|
||||
|
||||
p.save()
|
||||
|
||||
p = PaidPlan(
|
||||
shortname='pro_recurring',
|
||||
name='Pro (recurring)',
|
||||
external_id='b',
|
||||
price=15,
|
||||
paymentprocessor='braintree',
|
||||
paymenttype='single',
|
||||
)
|
||||
|
||||
p.save()
|
||||
|
||||
p = PaidPlan(
|
||||
shortname='pro_single',
|
||||
name='Pro (single)',
|
||||
external_id='c',
|
||||
price=20,
|
||||
paymentprocessor='braintree',
|
||||
paymenttype='single',
|
||||
)
|
||||
|
||||
p.save()
|
||||
|
||||
self.c = Client()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway)
|
||||
def test_billing_view(self,mock_gateway):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/billing/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
plans = PaidPlan.objects.filter(price__gt=0).order_by('price')
|
||||
plan = plans[0]
|
||||
|
||||
country = faker.country()
|
||||
countrycode = 'NL'
|
||||
for code, name in list(countries):
|
||||
if name.lower() == country.lower():
|
||||
countrycode = code
|
||||
|
||||
form_data = {
|
||||
'street_address':faker.street_address(),
|
||||
'city':faker.city(),
|
||||
'postal_code':faker.postalcode(),
|
||||
'country':countrycode,
|
||||
'plan':plan.id,
|
||||
}
|
||||
|
||||
form = RowerBillingAddressForm(form_data)
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
form = PlanSelectForm(form_data,paymentprocessor='braintree')
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = '/rowers/checkout/'+str(plan.id)+'/'
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway)
|
||||
def test_upgrade_view(self,mock_gateway):
|
||||
self.r.country = 'NL'
|
||||
self.r.customer_id = 34
|
||||
self.r.subscription_id = 34
|
||||
self.r.save()
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/upgrade/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
plans = PaidPlan.objects.filter(price__gt=0).order_by('price')
|
||||
plan = plans[0]
|
||||
|
||||
country = faker.country()
|
||||
countrycode = 'NL'
|
||||
for code, name in list(countries):
|
||||
if name.lower() == country.lower():
|
||||
countrycode = code
|
||||
|
||||
form_data = {
|
||||
'street_address':faker.street_address(),
|
||||
'city':faker.city(),
|
||||
'postal_code':faker.postalcode(),
|
||||
'country':countrycode,
|
||||
'plan':plan.id,
|
||||
}
|
||||
|
||||
form = RowerBillingAddressForm(form_data)
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
form = PlanSelectForm(form_data,paymentprocessor='braintree')
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = '/rowers/upgradecheckout/'+str(plan.id)+'/'
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway)
|
||||
def test_down_view(self,mock_gateway):
|
||||
self.r.country = 'NL'
|
||||
self.r.customer_id = 34
|
||||
self.r.subscription_id = 34
|
||||
self.r.save()
|
||||
|
||||
plans = PaidPlan.objects.all().order_by('price')
|
||||
plan = plans[1]
|
||||
|
||||
self.r.paidplan = plan
|
||||
self.r.save()
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/downgrade/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
country = faker.country()
|
||||
countrycode = 'NL'
|
||||
for code, name in list(countries):
|
||||
if name.lower() == country.lower():
|
||||
countrycode = code
|
||||
|
||||
form_data = {
|
||||
'street_address':faker.street_address(),
|
||||
'city':faker.city(),
|
||||
'postal_code':faker.postalcode(),
|
||||
'country':countrycode,
|
||||
'plan':plans[0].id,
|
||||
}
|
||||
|
||||
form = RowerBillingAddressForm(form_data)
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
form = PlanSelectForm(form_data,paymentprocessor='braintree')
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = '/rowers/downgradecheckout/'+str(plans[0].id)+'/'
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway)
|
||||
def test_planstop_view(self,mock_gateway):
|
||||
self.r.country = 'NL'
|
||||
self.r.customer_id = 34
|
||||
self.r.subscription_id = 34
|
||||
self.r.save()
|
||||
|
||||
plans = PaidPlan.objects.all().order_by('price')
|
||||
plan = plans[1]
|
||||
|
||||
self.r.paidplan = plan
|
||||
self.r.save()
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/me/cancelsubscriptions/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway)
|
||||
def test_planstobasic_view(self,mock_gateway):
|
||||
self.r.country = 'NL'
|
||||
self.r.customer_id = 34
|
||||
self.r.subscription_id = 34
|
||||
self.r.save()
|
||||
|
||||
plans = PaidPlan.objects.all().order_by('price')
|
||||
plan = plans[1]
|
||||
|
||||
self.r.paidplan = plan
|
||||
self.r.save()
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/me/cancelsubscription/34/'
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/me/cancelsubscriptions/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@patch('rowers.braintreestuff.braintree.BraintreeGateway',side_effect=MockBraintreeGateway)
|
||||
def test_checkouts_view(self,mock_gateway):
|
||||
|
||||
plans = PaidPlan.objects.all().order_by('price')
|
||||
plan = plans[1]
|
||||
|
||||
form_data = {
|
||||
'amount':'15.00',
|
||||
'plan': plans[1].id,
|
||||
'payment_method_nonce': 'aap',
|
||||
}
|
||||
|
||||
form = BillingForm(form_data)
|
||||
self.assertTrue(form.is_valid)
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/checkouts/'
|
||||
|
||||
response = self.c.post(url, form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/paymentcompleted/',
|
||||
status_code=302,target_status_code=200)
|
||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
2523
rowers/tests/testdata/testdata.tcx
vendored
2523
rowers/tests/testdata/testdata.tcx
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user