payments views passing tests
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
2
rowers/tests/testdata/testdata.tcx
vendored
2
rowers/tests/testdata/testdata.tcx
vendored
@@ -2502,7 +2502,7 @@
|
||||
</Trackpoint>
|
||||
</Track>
|
||||
</Lap>
|
||||
<Notes><Element 'Notes' at 0x13e2d080></Notes>
|
||||
<Notes><Element 'Notes' at 0x13397b70></Notes>
|
||||
</Activity>
|
||||
</Activities>
|
||||
<Creator>
|
||||
|
||||
Reference in New Issue
Block a user