Private
Public Access
1
0

payments views passing tests

This commit is contained in:
Sander Roosendaal
2019-01-16 12:36:23 +01:00
parent f22cd18916
commit 195d623cfc
7 changed files with 223 additions and 43 deletions

View File

@@ -118,7 +118,7 @@ def make_payment(rower,data):
job = myqueue(queuehigh,handle_send_email_transaction,
name, rower.user.email, amount)
return amount
return amount,''
else:
return 0,''
@@ -415,12 +415,4 @@ def get_transactions(start_date,end_date):
def mocktest(rower):
nonce_from_the_client = 'aap'
result = gateway.payment_method.create({
"customer_id": rower.customer_id,
"payment_method_nonce": nonce_from_the_client
})
return result.subscription.id
return '5'

View File

@@ -107,6 +107,8 @@ class mocked_canvas():
def print_figure(*args, **kwargs):
return True
# Mocked Dataprep
def mocked_fetchcperg(*args, **kwargs):
df = pd.read_csv('rowers/tests/testdata/cpdataerg.csv')
@@ -156,6 +158,8 @@ def mocked_read_df_cols_sql_multiflex(ids, columns, convertnewtons=True):
return df, extracols
# Mocked Strava
def mocked_stravaexport(f2,workoutname,stravatoken,description='',
activity_type='Rowing'):
print "this is mocked strava export"
@@ -172,6 +176,62 @@ class MockStravalibClient():
def update_activity(*args, **kwargs):
return StravaActivity()
# Mocked Braintree
## Higher level - unfortunately didn't succeed in mocking the gateway
def mock_create_customer(*args, **kwargs):
return 121
def mock_make_payment(*args, **kwargs):
return 15,''
def mock_update_subscription(*args, **kwargs):
try:
rower = args[0]
data = args[1]
planid = data['plan']
plan = PaidPlan.objects.get(id=planid)
amount = data['amount']
rower.paidplan = plan
rower.planexpires = (datetime.datetime.now()+datetime.timedelta(days=365)).date()
rower.clubsize = plan.clubsize
rower.paymenttype = plan.paymenttype
rower.rowerplan = plan.shortname
rower.subscription_id = 12
rower.save()
except:
amount = 20
return True,amount
def mock_create_subscription(*args, **kwargs):
return mock_update_subscription(*args, **kwargs)
def mock_cancel_subscription(*args, **kwargs):
themessages = []
errormessages = []
try:
basicplans = PaidPlan.objects.filter(price=0,paymentprocessor='braintree')
rower.paidplan = basicplans[0]
rower.teamplanexpires = timezone.now()
rower.planexpires = timezone.now()
rower.clubsize = 0
rower.rowerplan = 'basic'
rower.subscription_id = None
rower.save()
themessages.append("Your plan was reset to basic")
except:
pass
return True, themessages,errormessages
def mock_mocktest(*args, **kwargs):
return '121'
## Gateway stuff (not working)
class gatewayresult():
def __init__(self,*args,**kwargs):
self.is_success = kwargs.pop('is_success',True)
@@ -309,7 +369,9 @@ def mocked_gateway(*args, **kwargs):
return MockBraintreeGateway()
# Mocked Rowingdata
class mocked_rowingdata(rowingdata):
def __init__(self, *args, **kwargs):
super(mocked_rowingdata).__init__(*args, **kwargs)
@@ -354,7 +416,9 @@ class mocked_rowingdata(rowingdata):
fig1 = figure.Figure(figsize(12,10))
return fig1
# Mocked Requests
# to be done add polar mocks (for email processing)
def mocked_requests(*args, **kwargs):
with open('rowers/tests/testdata/c2jsonworkoutdata.txt','r') as infile:

View File

@@ -72,7 +72,14 @@ from rowers.utils import calculate_age
from rowers.tasks import handle_getagegrouprecords
import inspect
def get_random_file(filename='rowers/tests/testdata/testdata.csv',name=''):
frm = inspect.stack()[3]
mod = inspect.getmodule(frm[0])
fromstring = 'test_%s_' % mod.__name__
row = rdata(filename)
totaldist = row.df['cum_dist'].max()
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
@@ -93,9 +100,9 @@ def get_random_file(filename='rowers/tests/testdata/testdata.csv',name=''):
extension = filename[-3:]
if name != '':
newfilename = 'rowers/tests/testdata/temp/'+name+'.'+extension
newfilename = 'rowers/tests/testdata/temp/'+fromstring+name+'.'+extension
else:
newfilename = 'rowers/tests/testdata/temp/'+uuid4().hex[:16]+'.'+extension
newfilename = 'rowers/tests/testdata/temp/'+fromstring+uuid4().hex[:16]+'.'+extension
copyfile(filename,newfilename)
@@ -127,13 +134,18 @@ class WorkoutFactory(factory.DjangoModelFactory):
name = factory.LazyAttribute(lambda _: faker.word())
notes = faker.text()
startdatetime = get_random_file(name=faker.word())['startdatetime']
starttime = get_random_file(name=faker.word())['starttime']
startdatetime = factory.LazyAttribute(
lambda _:get_random_file(name=faker.word())['startdatetime'])
starttime = factory.LazyAttribute(
lambda _:get_random_file(name=faker.word())['starttime'])
workouttype='water'
date=timezone.now().date()
duration=get_random_file(name=faker.word())['duration']
distance=get_random_file(name=faker.word())['totaldist']
csvfilename=get_random_file(name=faker.word())['filename']
duration=factory.LazyAttribute(
lambda _:get_random_file(name=faker.word())['duration'])
distance=factory.LazyAttribute(
lambda _:get_random_file(name=faker.word())['totaldist'])
csvfilename=factory.LazyAttribute(
lambda _:get_random_file(name=faker.word())['filename'])
class SessionFactory(factory.DjangoModelFactory):

View File

@@ -53,8 +53,8 @@ class PaymentTest(TestCase):
# def tearDown(self):
# settings.DEBUG = False
@patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway)
def test_billing_view(self,mocked_gateway):
@patch('rowers.views.braintreestuff.create_customer',side_effect=mock_create_customer)
def test_billing_view(self,mocked_create_customer):
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
@@ -102,16 +102,16 @@ class PaymentTest(TestCase):
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)
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
#expected_url = '/rowers/checkout/'+str(plan.id)+'/'
expected_url = '/rowers/checkout/'+str(plan.id)+'/'
#self.assertRedirects(response,
# expected_url = expected_url,
# status_code=302,target_status_code=200)
self.assertRedirects(response,
expected_url = expected_url,
status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway)
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
def test_upgrade_view(self,mocked_gateway):
u = UserFactory()
r = Rower.objects.create(user=u,
@@ -174,7 +174,7 @@ class PaymentTest(TestCase):
expected_url = expected_url,
status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway)
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
def test_down_view(self,mocked_gateway):
u = UserFactory()
r = Rower.objects.create(user=u,
@@ -240,7 +240,7 @@ class PaymentTest(TestCase):
expected_url = expected_url,
status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway)
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
def test_planstop_view(self,mocked_gateway):
u = UserFactory()
r = Rower.objects.create(user=u,
@@ -278,7 +278,7 @@ class PaymentTest(TestCase):
self.assertEqual(response.status_code,200)
@patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway)
@patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway)
def test_planstobasic_view(self,mocked_gateway):
u = UserFactory()
r = Rower.objects.create(user=u,
@@ -318,8 +318,8 @@ class PaymentTest(TestCase):
expected_url = '/rowers/me/cancelsubscriptions/',
status_code=302,target_status_code=200)
@patch('rowers.braintreestuff.gateway', return_value = MockBraintreeGateway)
def test_patch(self, MockBraintreeGateway):
@patch('rowers.tests.test_payments.mocktest', side_effect=mock_mocktest)
def test_patch(self, mock_mocktest):
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
@@ -339,8 +339,8 @@ class PaymentTest(TestCase):
result = mocktest(r)
self.assertEqual(result,'121')
@patch('rowers.braintreestuff.gateway', side_effect=MockBraintreeGateway)
def test_checkouts_view(self,mocked_gateway):
@patch('rowers.views.braintreestuff.create_subscription', side_effect=mock_create_subscription)
def test_checkouts_view(self,mock_subscription):
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
@@ -373,11 +373,99 @@ class PaymentTest(TestCase):
login = self.c.login(username=u.username, password=self.password)
self.assertTrue(login)
# url = '/rowers/checkouts/'
url = '/rowers/checkouts/'
# response = self.c.post(url, form_data,follow=True)
# self.assertEqual(response.status_code,200)
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)
self.assertRedirects(response,
expected_url = '/rowers/paymentcompleted/?amount=20.00',
status_code=302,target_status_code=200)
@patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription)
def test_upgrade_checkouts_view(self,mock_subscription):
u = UserFactory()
r = Rower.objects.create(user=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(),
)
r.save()
u.set_password(self.password)
u.save()
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=u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/upgradecheckouts/'
response = self.c.post(url, form_data,follow=True)
self.assertEqual(response.status_code,200)
self.assertRedirects(response,
expected_url = '/rowers/paymentcompleted/?amount=20.00',
status_code=302,target_status_code=200)
@patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription)
def test_downgrade_checkouts_view(self,mock_subscription):
u = UserFactory()
r = Rower.objects.create(user=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(),
)
r.save()
u.set_password(self.password)
u.save()
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=u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/downgradecheckouts/'
response = self.c.post(url, form_data,follow=True)
self.assertEqual(response.status_code,200)
self.assertRedirects(response,
expected_url = '/rowers/downgradecompleted/',
status_code=302,target_status_code=200)

View File

@@ -44,8 +44,32 @@ class SimpleViewTest(TestCase):
response = self.c.get(url)
self.assertIn(response.status_code,[403,404])
def test_sendmail(self):
login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login)
url = '/rowers/email/send/'
form_data = {
'firstname': 'John',
'lastname':'Doe',
'email':'roosendaalsander@gmail.com',
'subject':'testing',
'botcheck': True,
'message': faker.text()
}
form = EmailForm(form_data)
self.assertTrue(form.is_valid)
response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200)
self.assertRedirects(response,
expected_url='/rowerss/email/',
status_code=302,target_status_code=200)
def test_getworkout(self):
with assert_raises(Http404):

Binary file not shown.

View File

@@ -2502,7 +2502,7 @@
</Trackpoint>
</Track>
</Lap>
<Notes>&lt;Element 'Notes' at 0x13e2d080&gt;</Notes>
<Notes>&lt;Element 'Notes' at 0x13397b70&gt;</Notes>
</Activity>
</Activities>
<Creator>