more payment view coverage tests
This commit is contained in:
@@ -627,6 +627,16 @@ class payment_method():
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.token = 'liesjeleerdelotje'
|
||||
|
||||
class notification():
|
||||
def __init__(self, *args, **kwargs):
|
||||
print('notifucation')
|
||||
self.kind = 'subscription_canceled'
|
||||
|
||||
class webhook_notification():
|
||||
def parse(*args, **kwargs):
|
||||
print(args,kwargs,'parse')
|
||||
return notification()
|
||||
|
||||
# mock braintree gateway
|
||||
class MockBraintreeGateway:
|
||||
def __init__(self,*args, **kwargs):
|
||||
@@ -636,6 +646,7 @@ class MockBraintreeGateway:
|
||||
self.transaction = transaction()
|
||||
self.subscription = subscription()
|
||||
self.payment_method = payment_method()
|
||||
self.webhook_notification = webhook_notification()
|
||||
|
||||
|
||||
def mocked_gateway(*args, **kwargs):
|
||||
@@ -1218,3 +1229,6 @@ class MockOAuth1Session:
|
||||
|
||||
def post(*args, **kwargs):
|
||||
return MockResponse({},200)
|
||||
|
||||
def mocked_invoiceid(*args,**kwargs):
|
||||
return 1
|
||||
|
||||
@@ -11,6 +11,8 @@ from django_countries import countries
|
||||
|
||||
from rowers.braintreestuff import mocktest
|
||||
|
||||
import urllib
|
||||
|
||||
class PaymentTest(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
@@ -55,9 +57,122 @@ class PaymentTest(TestCase):
|
||||
self.c = Client()
|
||||
self.password = faker.word()
|
||||
|
||||
s = b"""filename: britishrowing.json
|
||||
name: British Rowing Training Plan Beginner Week 1
|
||||
trainingDays:
|
||||
- order: 1
|
||||
workouts:
|
||||
- workoutName: Week 1 Session 1
|
||||
steps:
|
||||
- stepId: 0
|
||||
wkt_step_name: Warmup
|
||||
durationType: Time
|
||||
durationValue: 300000
|
||||
intensity: Warmup
|
||||
description: ""
|
||||
- stepId: 1
|
||||
wkt_step_name: Intervals
|
||||
durationType: Time
|
||||
durationValue: 60000
|
||||
intensity: Active
|
||||
description: ""
|
||||
- stepId: 2
|
||||
wkt_step_name: Interval Rest
|
||||
durationType: Time
|
||||
durationValue: 60000
|
||||
intensity: Rest
|
||||
description: ""
|
||||
- stepId: 3
|
||||
wkt_step_name: Rep
|
||||
durationType: RepeatUntilStepsCmplt
|
||||
durationValue: 1
|
||||
targetValue: 5
|
||||
- stepId: 4
|
||||
wkt_step_name: Cooldown
|
||||
durationType: Time
|
||||
durationValue: 300000
|
||||
intensity: Cooldown
|
||||
description: ""
|
||||
sport: ""
|
||||
description: ""
|
||||
- order: 4
|
||||
workouts:
|
||||
- workoutName: Week 1 Session 2
|
||||
steps:
|
||||
- stepId: 0
|
||||
wkt_step_name: Warmup
|
||||
durationType: Time
|
||||
durationValue: 300000
|
||||
intensity: Warmup
|
||||
description: ""
|
||||
- stepId: 1
|
||||
wkt_step_name: Interval
|
||||
durationType: Time
|
||||
durationValue: 300000
|
||||
intensity: Active
|
||||
description: ""
|
||||
- stepId: 2
|
||||
wkt_step_name: Interval Rest
|
||||
durationType: Time
|
||||
durationValue: 180000
|
||||
intensity: Rest
|
||||
description: ""
|
||||
- stepId: 3
|
||||
wkt_step_name: Rep
|
||||
durationType: RepeatUntilStepsCmplt
|
||||
durationValue: 1
|
||||
targetValue: 5
|
||||
- stepId: 4
|
||||
wkt_step_name: Cooldown
|
||||
durationType: Time
|
||||
durationValue: 300000
|
||||
intensity: Cooldown
|
||||
description: ""
|
||||
sport: ""
|
||||
description: ""
|
||||
duration: 7
|
||||
description: ""
|
||||
"""
|
||||
|
||||
self.file_data = {'yaml': SimpleUploadedFile('britishrowing.yml', s)}
|
||||
|
||||
with open('media/temp.yml','wb') as f:
|
||||
f.write(s)
|
||||
|
||||
self.instantplan = InstantPlan(
|
||||
uuid = "79b0dacf-9b49-4f33-9acf-e2e6734e22dc",
|
||||
url = "https://thepeteplan.wordpress.com/beginner-training/",
|
||||
name = faker.word(),
|
||||
goal = faker.word(),
|
||||
duration = 42,
|
||||
description = faker.word(),
|
||||
target = faker.word(),
|
||||
hoursperweek = 3,
|
||||
sessionsperweek = 3,
|
||||
price = 0,
|
||||
yaml = 'temp.yml',
|
||||
)
|
||||
|
||||
self.instantplan.save()
|
||||
|
||||
# def tearDown(self):
|
||||
# settings.DEBUG = False
|
||||
|
||||
@patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway)
|
||||
def test_braintree_webhook(self,mocked_gateway):
|
||||
url = reverse('braintree_webhook_view')
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
form_data = {
|
||||
'bt_signature':'aap',
|
||||
'bt_payload':'noot,'
|
||||
}
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.views.braintreestuff.create_customer',side_effect=mock_create_customer)
|
||||
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
|
||||
def test_billing_view(self,mocked_create_customer,mocked_gateway):
|
||||
@@ -284,6 +399,100 @@ class PaymentTest(TestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
@patch('rowers.views.braintreestuff.gateway', side_effect=MockBraintreeGateway)
|
||||
@patch('rowers.fakturoid.create_invoice',side_effect=mocked_invoiceid)
|
||||
def test_purchase_trainingplan_view(self, mocked_gateway,mocked_invoiceid):
|
||||
u = UserFactory()
|
||||
r = Rower.objects.create(user=u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='plan',
|
||||
paymentprocessor='braintree',
|
||||
street_address = faker.street_address(),
|
||||
city = faker.city(),
|
||||
postal_code = faker.postalcode(),
|
||||
country = faker.country(),
|
||||
)
|
||||
|
||||
r.save()
|
||||
r.country = 'NL'
|
||||
r.customer_id = 34
|
||||
r.subscription_id = 34
|
||||
r.save()
|
||||
u.set_password(self.password)
|
||||
u.save()
|
||||
|
||||
login = self.c.login(username=u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('buy_trainingplan_view',kwargs={'id':self.instantplan.id})
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
enddate = datetime.datetime.now()+datetime.timedelta(days=30)
|
||||
startdate = datetime.datetime.now()
|
||||
|
||||
form_data = {
|
||||
'enddate':enddate.strftime('%Y-%m-%d'),
|
||||
'startdate':startdate.strftime('%Y-%m-%d'),
|
||||
'notes':'no notes',
|
||||
'datechoice':'enddate',
|
||||
'name':'no name',
|
||||
}
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
|
||||
pars = {
|
||||
'name':'no name',
|
||||
'enddate':enddate.strftime('%Y-%m-%d'),
|
||||
'notes':'no notes',
|
||||
'status':True,
|
||||
'rower':r.id,
|
||||
}
|
||||
params = urllib.parse.urlencode(pars)
|
||||
expected_url = reverse('confirm_trainingplan_purchase_view',kwargs={'id':self.instantplan.id})
|
||||
expected_url = expected_url + "?%s" % params
|
||||
|
||||
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
|
||||
|
||||
url = expected_url
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
url = reverse('purchase_checkouts_view')
|
||||
|
||||
form_data = {
|
||||
'amount':'25.00',
|
||||
'plan': self.instantplan.id,
|
||||
'payment_method_nonce': 'aap',
|
||||
'tac':'tac',
|
||||
'paymenttype': 'CreditCard',
|
||||
'notes':'no notes',
|
||||
'enddate':enddate.strftime('%Y-%m-%d'),
|
||||
'status':True,
|
||||
}
|
||||
|
||||
form = TrainingPlanBillingForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = reverse('plannedsessions_view')
|
||||
startdate = enddate-datetime.timedelta(days=self.instantplan.duration)
|
||||
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||
expected_url = expected_url+'?when='+timeperiod
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
|
||||
def test_planstobasic_view(self,mocked_gateway):
|
||||
u = UserFactory()
|
||||
|
||||
@@ -49,6 +49,12 @@ class DataTest(TestCase):
|
||||
'tr':167,
|
||||
'an':180,
|
||||
'weightcategory':'lwt',
|
||||
'hrrestname':'rest',
|
||||
'hrut2name':'ut2',
|
||||
'hrut1name':'ut1',
|
||||
'hrtrname':'tr',
|
||||
'hranname':'an',
|
||||
'hrmaxname':'max',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
@@ -64,6 +70,12 @@ class DataTest(TestCase):
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
'hrrestname':'rest',
|
||||
'hrut2name':'ut2',
|
||||
'hrut1name':'ut1',
|
||||
'hrtrname':'tr',
|
||||
'hranname':'an',
|
||||
'hrmaxname':'max',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
@@ -78,6 +90,12 @@ class DataTest(TestCase):
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
'hrrestname':'rest',
|
||||
'hrut2name':'ut2',
|
||||
'hrut1name':'ut1',
|
||||
'hrtrname':'tr',
|
||||
'hranname':'an',
|
||||
'hrmaxname':'max',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
@@ -92,6 +110,12 @@ class DataTest(TestCase):
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
'hrrestname':'rest',
|
||||
'hrut2name':'ut2',
|
||||
'hrut1name':'ut1',
|
||||
'hrtrname':'tr',
|
||||
'hranname':'an',
|
||||
'hrmaxname':'max',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
@@ -106,6 +130,12 @@ class DataTest(TestCase):
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
'hrrestname':'rest',
|
||||
'hrut2name':'ut2',
|
||||
'hrut1name':'ut1',
|
||||
'hrtrname':'tr',
|
||||
'hranname':'an',
|
||||
'hrmaxname':'max',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
@@ -120,6 +150,12 @@ class DataTest(TestCase):
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
'hrrestname':'rest',
|
||||
'hrut2name':'ut2',
|
||||
'hrut1name':'ut1',
|
||||
'hrtrname':'tr',
|
||||
'hranname':'an',
|
||||
'hrmaxname':'max',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
@@ -114,6 +114,25 @@ class TeamTest(TestCase):
|
||||
except (IOError, FileNotFoundError,OSError):
|
||||
pass
|
||||
|
||||
def test_team_leave_view(self):
|
||||
res = add_member(self.t.id,self.users[1].rower)
|
||||
login = self.c.login(username=self.u.username, password = self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('team_leave_view',kwargs={'id':self.t.id})
|
||||
response = self.c.get(url,follow=True)
|
||||
expected_url = reverse('rower_teams_view')
|
||||
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
|
||||
|
||||
def test_team_delete_view(self):
|
||||
login = self.c.login(username=self.u.username, password = self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('team_delete_view',kwargs={'team_id':self.t.id})
|
||||
response = self.c.get(url,follow=True)
|
||||
expected_url = reverse('rower_teams_view')
|
||||
self.assertRedirects(response,expected_url=expected_url,status_code=302,target_status_code=200)
|
||||
|
||||
def test_manager_drop_member(self):
|
||||
res = add_member(self.t.id,self.users[1].rower)
|
||||
login = self.c.login(username=self.u.username, password = self.password)
|
||||
|
||||
Reference in New Issue
Block a user