Private
Public Access
1
0

patching sqlalchemy to make tests work

This commit is contained in:
Sander Roosendaal
2019-01-03 09:03:50 +01:00
parent d86329ad2e
commit c006c0599a
3 changed files with 435 additions and 343 deletions

418
rowers/tests/mocks.py Normal file
View File

@@ -0,0 +1,418 @@
import pytest
pytestmark = pytest.mark.django_db
from bs4 import BeautifulSoup
import re
from nose_parameterized import parameterized
from django.test import TestCase, Client,override_settings
from django.core.management import call_command
from django.utils.six import StringIO
from django.test.client import RequestFactory
from rowers.views import checkworkoutuser,c2_open
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
import rowers.plots as plots
import rowers.interactiveplots as iplots
import datetime
from rowingdata import rowingdata as rdata
from rowingdata import rower as rrower
from django.utils import timezone
from rowers.rows import handle_uploaded_file
from django.core.files.uploadedfile import SimpleUploadedFile
from time import strftime,strptime,mktime,time,daylight
import os
from rowers.tasks import handle_makeplot
from rowers.utils import serialize_list,deserialize_list
from rowers.utils import NoTokenError
from shutil import copyfile
from nose.tools import assert_true
from mock import Mock, patch
from minimocktest import MockTestCase
import pandas as pd
import rowers.c2stuff as c2stuff
import json
import numpy as np
from rowers import urls
from rowers.views import (
error500_view,error404_view,error400_view,error403_view
)
from rowers.dataprep import delete_strokedata
from redis import StrictRedis
redis_connection = StrictRedis()
from django_mailbox.models import Mailbox,MessageAttachment,Message
def mocked_sqlalchemy(*args, **kwargs):
# return object with method
class MockEngine:
def connect(self):
return MockConnection()
def dispose(self):
return True
def raw_connection(self):
return True
class MockConnection:
def begin(self):
return True
def execute(self):
return True
def execute(self):
return True
def close(self):
return True
def __exit__(self, *args, **kwargs):
return True
def __enter__(self, *args, **kwargs):
return True
return MockEngine()
#@pytest.mark.django_db
class DjangoTestCase(TestCase, MockTestCase):
def _pre_setup(self):
MockTestCase.setUp(self)
TestCase._pre_setup(self)
self.client = Client()
def _post_teardown(self):
TestCase._post_teardown(self)
MockTestCase.tearDown(self)
delete_strokedata(1)
# to be done add polar mocks (for email processing)
def mocked_requests(*args, **kwargs):
with open('rowers/tests/testdata/c2jsonworkoutdata.txt','r') as infile:
c2workoutdata = json.load(infile)
with open('rowers/tests/testdata/c2jsonstrokedata.txt','r') as infile:
c2strokedata = json.load(infile)
polar_json = {
'available-user-data': []
}
c2workoutlist = json.load(open('rowers/tests/testdata/c2workoutlist.txt'))
c2uploadjson = {
"data": {
"id": 339,
"user_id": 1,
"date": "2015-08-05 13:15:41",
"timezone": "Europe/London",
"date_utc": "2015-08-05 12:15:41",
"distance": 5649,
"type": "rower",
"time": 8649,
"time_formatted": "14:24.9",
"workout_type": "JustRow",
"source": "ErgData",
"weight_class": "H",
"verified": True,
"ranked": False
}
}
stravaworkoutlist = json.load(open('rowers/tests/testdata/stravaworkoutlist.txt'))
sporttracksworkoutlist = json.load(open('rowers/tests/testdata/sporttracksworkouts.txt'))
rkworkoutlistjson = json.load(open('rowers/tests/testdata/rkworkoutslist.txt','r'))
uaworkoutlistjson = json.load(open('rowers/tests/testdata/uaworkoutlist.txt','r'))
stravasummaryjson = json.load(open('rowers/tests/testdata/stravaworkoutsummary.txt','r'))
stravatimejson = json.load(open('rowers/tests/testdata/stravatimetestdata.txt','r'))
stravavelojson = json.load(open('rowers/tests/testdata/stravavelotestdata.txt','r'))
stravapowerjson = json.load(open('rowers/tests/testdata/stravapowertestdata.txt','r'))
stravadistancejson = json.load(open('rowers/tests/testdata/stravadistancetestdata.txt','r'))
stravalatlongjson = json.load(open('rowers/tests/testdata/stravalatlongtestdata.txt','r'))
stravahrjson = json.load(open('rowers/tests/testdata/stravahrtestdata.txt','r'))
stravaspmjson = json.load(open('rowers/tests/testdata/stravaspmtestdata.txt','r'))
uapostworkoutjson = json.load(open('rowers/tests/testdata/uapostworkoutresponse.txt','r'))
tpuploadresponse = json.load(open('rowers/tests/testdata/tpuploadresponse.txt','r'))
stravastreamjson = {
'time':stravatimejson,
'velocity_smooth':stravavelojson,
'distance':stravadistancejson,
'latlng':stravalatlongjson,
'heartrate':stravahrjson,
'cadence':stravaspmjson,
'power':stravapowerjson,
}
ststrokesjson = json.load(open('rowers/tests/testdata/sporttracksstrokedata.txt','r'))
rkstrokesjson = json.load(open('rowers/tests/testdata/rkstrokes.txt','r'))
uastrokesjson = json.load(open('rowers/tests/testdata/uastrokes.txt','r'))
uauserjson = json.load(open('rowers/tests/testdata/uauser.txt','r'))
class MockResponse:
def __init__(self, json_data, status_code):
self.json_data = json_data
self.status_code = status_code
def json(self):
return self.json_data
class MockHeaderResponse:
def __init__(self, header_data, status_code):
self.headers = header_data
self.status_code = status_code
class MockSession:
def send(self,prepped):
# prepped.url
# prepped.body (post data)
# prepped.headers
# prepped.method
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if not args:
return MockSession()
polartester = re.compile('.*?polaraccesslink\.com')
c2tester = re.compile('.*?log\.concept2\.com')
stravatester = re.compile('.*?strava\.com')
sttester = re.compile('.*?sporttracks\.mobi')
rktester = re.compile('.*?runkeeper\.com')
uatester = re.compile('.*?mapmyfitness\.com')
tptester = re.compile('.*?trainingpeaks\.com')
c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+'
c2importtester = re.compile(c2importregex)
c2uploadregex = '.*?concept2.com\/api\/users\/\d+\/results$'
c2uploadtester = re.compile(c2uploadregex)
c2strokesregex = '.*?concept2.com\/api\/users\/me\/results\/\d+\/strokes'
c2strokestester = re.compile(c2strokesregex)
c2workoutlistregex = '.*?concept2\.com\/api\/users\/me\/results\?page=\d'
c2workoutlisttester = re.compile(c2workoutlistregex)
stravaworkoutlistregex = '.*?strava\.com\/api\/v3\/athlete\/activities'
stravaworkoutlisttester = re.compile(stravaworkoutlistregex)
stravastreamregex = '.*?strava\.com\/api\/v3\/activities\/\d+\/streams\/(\w.*?)\?'
stravastreamtester = re.compile(stravastreamregex)
stravasummaryregex = '.*?strava\.com\/api\/v3\/activities\/\d+$'
stravasummarytester = re.compile(stravasummaryregex)
stuploadregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities.json$'
stuploadtester = re.compile(stuploadregex)
stworkoutlistregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities$'
stworkoutlisttester = re.compile(stworkoutlistregex)
ststrokesregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities/\d+$'
ststrokestester = re.compile(ststrokesregex)
rkuploadregex = '.*?api\.runkeeper\.com\/fitnessActivities$'
rkuploadtester = re.compile(rkuploadregex)
rkuserregex = '.*?api\.runkeeper\.com\/user$'
rkusertester = re.compile(rkuserregex)
rkstrokesregex = '.*?api\.runkeeper\.com\/fitnessActivities/\d+$'
rkstrokestester = re.compile(rkstrokesregex)
uaapiregex = '.*?api\.ua\.com'
uaapitester = re.compile(uaapiregex)
uauploadregex = '.*?api\.ua\.com\/v7.1\/workout\/$'
uauploadtester = re.compile(uauploadregex)
uastrokesregex = '.*?api\.ua\.com\/v7.1\/workout\/\d+'
uastrokestester = re.compile(uastrokesregex)
ualistregex = '.*?api\.ua\.com\/v7.1\/workout\/\?user'
ualisttester = re.compile(ualistregex)
uauserregex = '.*?api\.ua\.com\/v7.1\/user\/self\/'
uausertester = re.compile(uauserregex)
tpuploadregex = '.*?trainingpeaks\.com\/v1\/file'
tpuploadtester = re.compile(tpuploadregex)
if polartester.match(args[0]):
json_data = polar_json
return MockResponse(json_data,200)
if tptester.match(args[0]):
if 'token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif tpuploadtester.match(args[0]):
return MockResponse(tpuploadresponse,200)
if uaapitester.match(args[0]):
if 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif uauploadtester.match(args[0]):
if 'data' in kwargs:
return MockResponse(uapostworkoutjson,200)
elif uastrokestester.match(args[0]):
return MockResponse(uastrokesjson,200)
elif ualisttester.match(args[0]):
return MockResponse(uaworkoutlistjson,200)
elif uausertester.match(args[0]):
return MockResponse(uauserjson,200)
if uatester.match(args[0]):
if 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if rktester.match(args[0]):
if 'token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif rkuploadtester.match(args[0]):
if 'data' in kwargs:
# post
header_data = {
'Location': '/fitnessActivities/12'
}
return MockHeaderResponse(header_data,200)
else:
json_data = rkworkoutlistjson
return MockResponse(json_data,200)
elif rkusertester.match(args[0]):
json_data = {
"userID": 1234567890,
"profile": "/profile",
"settings": "/settings",
"fitness_activities": "/fitnessActivities",
"strength_training_activities": "/strengthTrainingActivities",
"background_activities": "/backgroundActivities",
"sleep": "/sleep",
"nutrition": "/nutrition",
"weight": "/weight",
"general_measurements": "/generalMeasurements",
"diabetes": "/diabetes",
"records": "/records",
"team": "/team"
}
return MockResponse(json_data, 200)
elif rkstrokestester.match(args[0]):
return MockResponse(rkstrokesjson,200)
if sttester.match(args[0]):
if 'oauth2/token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if ststrokestester.match(args[0]):
return MockResponse(ststrokesjson,200)
if stuploadtester.match(args[0]):
json_data = {
"uris": [
"https://api.sporttracks.mobi/api/v2/fitnessActivities/123456.json"
]
}
return MockResponse(json_data, 200)
if stworkoutlisttester.match(args[0]):
return MockResponse(sporttracksworkoutlist,200)
if stravatester.match(args[0]):
if stravaworkoutlisttester.match(args[0]):
return MockResponse(stravaworkoutlist,200)
if stravastreamtester.match(args[0]):
metric = stravastreamtester.match(args[0]).group(1)
json_data = stravastreamjson[metric]
return MockResponse(json_data,200)
elif stravasummarytester.match(args[0]):
return MockResponse(stravasummaryjson,200)
elif 'token' in args[0]:
json_data = {
"token_type": "Bearer",
"access_token": "987654321234567898765432123456789",
"refresh_token": "1234567898765432112345678987654321",
"expires_at": 1531385304
}
return MockResponse(json_data,200)
if c2tester.match(args[0]):
if c2uploadtester.match(args[0]):
return MockResponse(c2uploadjson,201)
if c2strokestester.match(args[0]):
return MockResponse(c2strokedata,200)
elif c2importtester.match(args[0]):
return MockResponse(c2workoutdata,200)
elif c2workoutlisttester.match(args[0]):
return MockResponse(c2workoutlist,200)
elif 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif 'users/me' in args[0]:
json_data = {
'data': {
'username': 'john',
'id': 1234,
}
}
return MockResponse(json_data,200)
elif 'results' in args[0]:
json_data = {
'data': {
'id': 1223,
}
}
else:
return MockResponse(c2workoutdata,200)
return MockResponse(None,404)

View File

@@ -37,7 +37,9 @@ import json
import numpy as np
from rowers import urls
from rowers.views import error500_view,error404_view,error400_view,error403_view
from rowers.views import (
error500_view,error404_view,error400_view,error403_view
)
from rowers.dataprep import delete_strokedata
@@ -46,343 +48,9 @@ redis_connection = StrictRedis()
from django_mailbox.models import Mailbox,MessageAttachment,Message
#@pytest.mark.django_db
class DjangoTestCase(TestCase, MockTestCase):
def _pre_setup(self):
MockTestCase.setUp(self)
TestCase._pre_setup(self)
self.client = Client()
from rowers.tests.mocks import *
def _post_teardown(self):
TestCase._post_teardown(self)
MockTestCase.tearDown(self)
delete_strokedata(1)
# to be done add polar mocks (for email processing)
def mocked_requests(*args, **kwargs):
with open('rowers/tests/testdata/c2jsonworkoutdata.txt','r') as infile:
c2workoutdata = json.load(infile)
with open('rowers/tests/testdata/c2jsonstrokedata.txt','r') as infile:
c2strokedata = json.load(infile)
polar_json = {
'available-user-data': []
}
c2workoutlist = json.load(open('rowers/tests/testdata/c2workoutlist.txt'))
c2uploadjson = {
"data": {
"id": 339,
"user_id": 1,
"date": "2015-08-05 13:15:41",
"timezone": "Europe/London",
"date_utc": "2015-08-05 12:15:41",
"distance": 5649,
"type": "rower",
"time": 8649,
"time_formatted": "14:24.9",
"workout_type": "JustRow",
"source": "ErgData",
"weight_class": "H",
"verified": True,
"ranked": False
}
}
stravaworkoutlist = json.load(open('rowers/tests/testdata/stravaworkoutlist.txt'))
sporttracksworkoutlist = json.load(open('rowers/tests/testdata/sporttracksworkouts.txt'))
rkworkoutlistjson = json.load(open('rowers/tests/testdata/rkworkoutslist.txt','r'))
uaworkoutlistjson = json.load(open('rowers/tests/testdata/uaworkoutlist.txt','r'))
stravasummaryjson = json.load(open('rowers/tests/testdata/stravaworkoutsummary.txt','r'))
stravatimejson = json.load(open('rowers/tests/testdata/stravatimetestdata.txt','r'))
stravavelojson = json.load(open('rowers/tests/testdata/stravavelotestdata.txt','r'))
stravapowerjson = json.load(open('rowers/tests/testdata/stravapowertestdata.txt','r'))
stravadistancejson = json.load(open('rowers/tests/testdata/stravadistancetestdata.txt','r'))
stravalatlongjson = json.load(open('rowers/tests/testdata/stravalatlongtestdata.txt','r'))
stravahrjson = json.load(open('rowers/tests/testdata/stravahrtestdata.txt','r'))
stravaspmjson = json.load(open('rowers/tests/testdata/stravaspmtestdata.txt','r'))
uapostworkoutjson = json.load(open('rowers/tests/testdata/uapostworkoutresponse.txt','r'))
tpuploadresponse = json.load(open('rowers/tests/testdata/tpuploadresponse.txt','r'))
stravastreamjson = {
'time':stravatimejson,
'velocity_smooth':stravavelojson,
'distance':stravadistancejson,
'latlng':stravalatlongjson,
'heartrate':stravahrjson,
'cadence':stravaspmjson,
'power':stravapowerjson,
}
ststrokesjson = json.load(open('rowers/tests/testdata/sporttracksstrokedata.txt','r'))
rkstrokesjson = json.load(open('rowers/tests/testdata/rkstrokes.txt','r'))
uastrokesjson = json.load(open('rowers/tests/testdata/uastrokes.txt','r'))
uauserjson = json.load(open('rowers/tests/testdata/uauser.txt','r'))
class MockResponse:
def __init__(self, json_data, status_code):
self.json_data = json_data
self.status_code = status_code
def json(self):
return self.json_data
class MockHeaderResponse:
def __init__(self, header_data, status_code):
self.headers = header_data
self.status_code = status_code
class MockSession:
def send(self,prepped):
# prepped.url
# prepped.body (post data)
# prepped.headers
# prepped.method
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if not args:
return MockSession()
polartester = re.compile('.*?polaraccesslink\.com')
c2tester = re.compile('.*?log\.concept2\.com')
stravatester = re.compile('.*?strava\.com')
sttester = re.compile('.*?sporttracks\.mobi')
rktester = re.compile('.*?runkeeper\.com')
uatester = re.compile('.*?mapmyfitness\.com')
tptester = re.compile('.*?trainingpeaks\.com')
c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+'
c2importtester = re.compile(c2importregex)
c2uploadregex = '.*?concept2.com\/api\/users\/\d+\/results$'
c2uploadtester = re.compile(c2uploadregex)
c2strokesregex = '.*?concept2.com\/api\/users\/me\/results\/\d+\/strokes'
c2strokestester = re.compile(c2strokesregex)
c2workoutlistregex = '.*?concept2\.com\/api\/users\/me\/results\?page=\d'
c2workoutlisttester = re.compile(c2workoutlistregex)
stravaworkoutlistregex = '.*?strava\.com\/api\/v3\/athlete\/activities'
stravaworkoutlisttester = re.compile(stravaworkoutlistregex)
stravastreamregex = '.*?strava\.com\/api\/v3\/activities\/\d+\/streams\/(\w.*?)\?'
stravastreamtester = re.compile(stravastreamregex)
stravasummaryregex = '.*?strava\.com\/api\/v3\/activities\/\d+$'
stravasummarytester = re.compile(stravasummaryregex)
stuploadregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities.json$'
stuploadtester = re.compile(stuploadregex)
stworkoutlistregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities$'
stworkoutlisttester = re.compile(stworkoutlistregex)
ststrokesregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities/\d+$'
ststrokestester = re.compile(ststrokesregex)
rkuploadregex = '.*?api\.runkeeper\.com\/fitnessActivities$'
rkuploadtester = re.compile(rkuploadregex)
rkuserregex = '.*?api\.runkeeper\.com\/user$'
rkusertester = re.compile(rkuserregex)
rkstrokesregex = '.*?api\.runkeeper\.com\/fitnessActivities/\d+$'
rkstrokestester = re.compile(rkstrokesregex)
uaapiregex = '.*?api\.ua\.com'
uaapitester = re.compile(uaapiregex)
uauploadregex = '.*?api\.ua\.com\/v7.1\/workout\/$'
uauploadtester = re.compile(uauploadregex)
uastrokesregex = '.*?api\.ua\.com\/v7.1\/workout\/\d+'
uastrokestester = re.compile(uastrokesregex)
ualistregex = '.*?api\.ua\.com\/v7.1\/workout\/\?user'
ualisttester = re.compile(ualistregex)
uauserregex = '.*?api\.ua\.com\/v7.1\/user\/self\/'
uausertester = re.compile(uauserregex)
tpuploadregex = '.*?trainingpeaks\.com\/v1\/file'
tpuploadtester = re.compile(tpuploadregex)
if polartester.match(args[0]):
json_data = polar_json
return MockResponse(json_data,200)
if tptester.match(args[0]):
if 'token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif tpuploadtester.match(args[0]):
return MockResponse(tpuploadresponse,200)
if uaapitester.match(args[0]):
if 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif uauploadtester.match(args[0]):
if 'data' in kwargs:
return MockResponse(uapostworkoutjson,200)
elif uastrokestester.match(args[0]):
return MockResponse(uastrokesjson,200)
elif ualisttester.match(args[0]):
return MockResponse(uaworkoutlistjson,200)
elif uausertester.match(args[0]):
return MockResponse(uauserjson,200)
if uatester.match(args[0]):
if 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if rktester.match(args[0]):
if 'token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif rkuploadtester.match(args[0]):
if 'data' in kwargs:
# post
header_data = {
'Location': '/fitnessActivities/12'
}
return MockHeaderResponse(header_data,200)
else:
json_data = rkworkoutlistjson
return MockResponse(json_data,200)
elif rkusertester.match(args[0]):
json_data = {
"userID": 1234567890,
"profile": "/profile",
"settings": "/settings",
"fitness_activities": "/fitnessActivities",
"strength_training_activities": "/strengthTrainingActivities",
"background_activities": "/backgroundActivities",
"sleep": "/sleep",
"nutrition": "/nutrition",
"weight": "/weight",
"general_measurements": "/generalMeasurements",
"diabetes": "/diabetes",
"records": "/records",
"team": "/team"
}
return MockResponse(json_data, 200)
elif rkstrokestester.match(args[0]):
return MockResponse(rkstrokesjson,200)
if sttester.match(args[0]):
if 'oauth2/token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if ststrokestester.match(args[0]):
return MockResponse(ststrokesjson,200)
if stuploadtester.match(args[0]):
json_data = {
"uris": [
"https://api.sporttracks.mobi/api/v2/fitnessActivities/123456.json"
]
}
return MockResponse(json_data, 200)
if stworkoutlisttester.match(args[0]):
return MockResponse(sporttracksworkoutlist,200)
if stravatester.match(args[0]):
if stravaworkoutlisttester.match(args[0]):
return MockResponse(stravaworkoutlist,200)
if stravastreamtester.match(args[0]):
metric = stravastreamtester.match(args[0]).group(1)
json_data = stravastreamjson[metric]
return MockResponse(json_data,200)
elif stravasummarytester.match(args[0]):
return MockResponse(stravasummaryjson,200)
elif 'token' in args[0]:
json_data = {
"token_type": "Bearer",
"access_token": "987654321234567898765432123456789",
"refresh_token": "1234567898765432112345678987654321",
"expires_at": 1531385304
}
return MockResponse(json_data,200)
if c2tester.match(args[0]):
if c2uploadtester.match(args[0]):
return MockResponse(c2uploadjson,201)
if c2strokestester.match(args[0]):
return MockResponse(c2strokedata,200)
elif c2importtester.match(args[0]):
return MockResponse(c2workoutdata,200)
elif c2workoutlisttester.match(args[0]):
return MockResponse(c2workoutlist,200)
elif 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif 'users/me' in args[0]:
json_data = {
'data': {
'username': 'john',
'id': 1234,
}
}
return MockResponse(json_data,200)
elif 'results' in args[0]:
json_data = {
'data': {
'id': 1223,
}
}
else:
return MockResponse(c2workoutdata,200)
return MockResponse(None,404)
#@pytest.mark.django_db
@pytest.mark.django_db
class C2Objects(DjangoTestCase):
def setUp(self):
self.c = Client()
@@ -472,7 +140,8 @@ class C2Objects(DjangoTestCase):
self.assertEqual(response.status_code,200)
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
def test_c2_import(self, mock_get):
@patch('rowers.dataprep.create_engine')
def test_c2_import(self, mock_get, mocked_sqlalchemy):
response = self.c.get('/rowers/workout/c2import/12/',follow=True)
@@ -578,7 +247,8 @@ class C2ObjectsTokenExpired(DjangoTestCase):
self.assertEqual(response.status_code,200)
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
def test_c2_import(self, mock_get):
@patch('rowers.dataprep.create_engine')
def test_c2_import(self, mock_get, mocked_sqlalchemy):
response = self.c.get('/rowers/workout/c2import/12/',follow=True)
@@ -839,7 +509,7 @@ class RunKeeperObjects(DjangoTestCase):
#@pytest.mark.django_db
@pytest.mark.django_db
class UAObjects(DjangoTestCase):
def setUp(self):
self.c = Client()
@@ -929,7 +599,8 @@ class UAObjects(DjangoTestCase):
self.assertEqual(response.status_code,200)
@patch('rowers.imports.requests.get', side_effect=mocked_requests)
def test_underarmour_import(self, mock_get):
@patch('rowers.dataprep.create_engine')
def test_underarmour_import(self, mock_get, mocked_sqlalchemy):
response = self.c.get('/rowers/workout/underarmourimport/12/',follow=True)

View File

@@ -49,8 +49,10 @@ from rowers.tests.test_imports import mocked_requests
from django_mailbox.models import Mailbox,MessageAttachment,Message
from rowers.tests.mocks import mocked_sqlalchemy
#@pytest.mark.django_db
@pytest.mark.django_db
class UploadTests(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
@@ -151,7 +153,8 @@ workout water
pass
@patch('requests.get', side_effect=mocked_requests)
def test_emailprocessing(self, mock_get):
@patch('rowers.dataprep.create_engine')
def test_emailprocessing(self, mock_get, mocked_sqlalchemy):
out = StringIO()
call_command('processemail', stdout=out,testing=True)
self.assertIn('Successfully processed email attachments',out.getvalue())