Private
Public Access
1
0

passing tests with mock server for nk workouts list

This commit is contained in:
Sander Roosendaal
2021-03-30 09:05:26 +02:00
parent 68edfe5a94
commit 0cd8fabc13
11 changed files with 523 additions and 7 deletions

View File

@@ -621,6 +621,8 @@ def mocked_requests(*args, **kwargs):
stravaworkoutlist = json.load(open('rowers/tests/testdata/stravaworkoutlist.txt'))
sporttracksworkoutlist = json.load(open('rowers/tests/testdata/sporttracksworkouts.txt'))
nkworkoutlist = json.load(open('rowers/tests/testdata/nkworkouts.txt'))
rkworkoutlistjson = json.load(open('rowers/tests/testdata/rkworkoutslist.txt','r'))
uaworkoutlistjson = json.load(open('rowers/tests/testdata/uaworkoutlist.txt','r'))
@@ -732,6 +734,7 @@ def mocked_requests(*args, **kwargs):
rktester = re.compile('.*?runkeeper\.com')
uatester = re.compile('.*?mapmyfitness\.com')
tptester = re.compile('.*?trainingpeaks\.com')
nktester = re.compile('.*?nkrowlink\.com')
garmintester = re.compile('.*?garmin\.com')
c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+'
@@ -746,6 +749,9 @@ def mocked_requests(*args, **kwargs):
c2workoutlistregex = '.*?concept2\.com\/api\/users\/me\/results\?page=\d'
c2workoutlisttester = re.compile(c2workoutlistregex)
nkworkoutlistregex = '.*?nkrowlink\.com\/api\/v1\/sessions'
nkworkoutlisttester = re.compile(nkworkoutlistregex)
stravaathleteregex = '.*?strava\.com\/api\/v3\/athlete$'
stravaathletetester = re.compile(stravaathleteregex)
@@ -796,6 +802,7 @@ def mocked_requests(*args, **kwargs):
garmindownloadregex = '.*?garmin\.com\/mockfile?id=1'
garmindownloadtester = re.compile(garmindownloadregex)
if garmintester.match(args[0]):
if garmindownloadtester.match(args[0]):
return MockStreamResponse('rowers/tests/testdata/3x250m.fit',200)
@@ -910,6 +917,20 @@ def mocked_requests(*args, **kwargs):
return MockResponse(sporttracksworkoutlist,200)
if nktester.match(args[0]):
if nkworkoutlisttester.match(args[0]):
return MockResponse(nkworkoutlist,200)
elif 'token' in args[0]:
json_data = {
"token_type": "Bearer",
"access_token": "987654321234567898765432123456789",
"refresh_token": "1234567898765432112345678987654321",
"expires_at": arrow.now().timestamp()+7200
}
return MockResponse(json_data,200)
if stravatester.match(args[0]):
if stravaworkoutlisttester.match(args[0]):
return MockResponse(stravaworkoutlist,200)

View File

@@ -360,6 +360,70 @@ class C2ObjectsTokenExpired(DjangoTestCase):
self.assertEqual(response.status_code, 200)
#@pytest.mark.django_db
@override_settings(TESTING=True)
class NKObjects(DjangoTestCase):
def setUp(self):
self.c = Client()
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
gdproptindate=timezone.now()
)
self.r.nktoken = '12'
self.r.nkrefreshtoken = '123'
self.r.nktokenexpirydate = datetime.datetime.now()-datetime.timedelta(days=1)
self.r.save()
self.c.login(username='john',password='koeinsloot')
self.nu = datetime.datetime.now()
filename = 'rowers/tests/testdata/testdata.csv'
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
hrut1=self.r.ut1,hrat=self.r.at,
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
row = rdata(filename,rower=rr)
totaldist = row.df['cum_dist'].max()
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
hours = int(totaltime/3600.)
minutes = int((totaltime - 3600.*hours)/60.)
seconds = int(totaltime - 3600.*hours - 60.*minutes)
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
self.w = Workout.objects.create(
name='testworkout',workouttype='water',
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
starttime=workoutstarttime,
startdatetime=row.rowdatetime,
duration=duration,distance=totaldist,
csvfilename=filename
)
@patch('rowers.nkstuff.requests.get', side_effect=mocked_requests)
@patch('rowers.nkstuff.requests.post', side_effect=mocked_requests)
def test_nk_list(self, mock_get, mockpost):
result = rowers.nkstuff.rower_nk_token_refresh(self.u)
self.assertEqual(result,"987654321234567898765432123456789")
response = self.c.get('/rowers/workout/nkimport/')
self.assertEqual(response.status_code,200)
#@pytest.mark.django_db

84
rowers/tests/testdata/nkworkoutlist.txt vendored Normal file
View File

@@ -0,0 +1,84 @@
[
{
"id": 1,
"name": "JustGo-7189M",
"type": 0,
"speedInput": 0,
"startTime": 1614264826,
"endTime": 1614269826,
"location": "Some Location",
"deviceId": 11,
"elapsedTime": 1140000,
"totalDistanceImp": 2920.69,
"totalDistanceGps": 2286.5,
"avgPaceImp": 195159.36302723,
"avgPaceGps": 250466.812537141,
"avgStrokeRate": 19.5,
"distStrokeImp": 8.51,
"distStrokeGps": 6.77,
"avgHeartRate": 158,
"totalStrokeCount": 343,
"totalCalories": 4959900,
"avgCalHour": 4482062.35252774,
"avgSpeedGps": 2,
"avgSpeedImp": 2.56,
"avgPower": 68.6979270660324,
"avgCatch": -46.7961491475831,
"avgSlip": 16.1616225246003,
"avgFinish": 48.1512290049444,
"avgWash": 22.9514686031976,
"avgForceAvg": 114.502194258813,
"avgWork": 210.785493336831,
"avgForceMax": 249.481436977143,
"avgMaxForceAngle": 4.75378911974861,
"startGpsLat": 39.7356346,
"startGpsLon": -75.5581928,
"intervals": [
{
"id": 1,
"sessionId": 1,
"startTime": 1614264826,
"intervalNumber": 1,
"sessionStrokeStartIndex": 473,
"sessionStrokeEndIndex": 674,
"sessionStrokeCount": 91,
"elapsedTime": 1140000,
"totalDistanceImp": 2920.69,
"totalDistanceGps": 2286.5,
"avgPaceImp": 195159.36302723,
"avgPaceGps": 250466.812537141,
"avgStrokeRate": 19.5,
"distStrokeImp": 8.51,
"distStrokeGps": 6.77,
"avgHeartRate": 158,
"totalStrokeCount": 343,
"totalCalories": 4959900,
"avgCalHour": 4482062.35252774,
"avgSpeedGps": 2,
"avgSpeedImp": 2.56,
"avgPower": 68.6979270660324,
"avgCatch": -46.7961491475831,
"avgSlip": 16.1616225246003,
"avgFinish": 48.1512290049444,
"avgWash": 22.9514686031976,
"avgForceAvg": 114.502194258813,
"avgWork": 210.785493336831,
"avgForceMax": 249.481436977143,
"avgMaxForceAngle": 4.75378911974861,
"startGpsLat": 39.7356346,
"startGpsLon": -75.5581928
}
],
"oarlockSessions": [
{
"id": 1,
"sessionId": 1,
"boatName": "Fast Boat",
"seatNumber": 3,
"portStarboard": 0,
"oarLength": 284,
"oarInboardLength": 85
}
]
}
]

84
rowers/tests/testdata/nkworkouts.txt vendored Normal file
View File

@@ -0,0 +1,84 @@
[
{
"id": 1,
"name": "JustGo-7189M",
"type": 0,
"speedInput": 0,
"startTime": 1614264826,
"endTime": 1614269826,
"location": "Some Location",
"deviceId": 11,
"elapsedTime": 1140000,
"totalDistanceImp": 2920.69,
"totalDistanceGps": 2286.5,
"avgPaceImp": 195159.36302723,
"avgPaceGps": 250466.812537141,
"avgStrokeRate": 19.5,
"distStrokeImp": 8.51,
"distStrokeGps": 6.77,
"avgHeartRate": 158,
"totalStrokeCount": 343,
"totalCalories": 4959900,
"avgCalHour": 4482062.35252774,
"avgSpeedGps": 2,
"avgSpeedImp": 2.56,
"avgPower": 68.6979270660324,
"avgCatch": -46.7961491475831,
"avgSlip": 16.1616225246003,
"avgFinish": 48.1512290049444,
"avgWash": 22.9514686031976,
"avgForceAvg": 114.502194258813,
"avgWork": 210.785493336831,
"avgForceMax": 249.481436977143,
"avgMaxForceAngle": 4.75378911974861,
"startGpsLat": 39.7356346,
"startGpsLon": -75.5581928,
"intervals": [
{
"id": 1,
"sessionId": 1,
"startTime": 1614264826,
"intervalNumber": 1,
"sessionStrokeStartIndex": 473,
"sessionStrokeEndIndex": 674,
"sessionStrokeCount": 91,
"elapsedTime": 1140000,
"totalDistanceImp": 2920.69,
"totalDistanceGps": 2286.5,
"avgPaceImp": 195159.36302723,
"avgPaceGps": 250466.812537141,
"avgStrokeRate": 19.5,
"distStrokeImp": 8.51,
"distStrokeGps": 6.77,
"avgHeartRate": 158,
"totalStrokeCount": 343,
"totalCalories": 4959900,
"avgCalHour": 4482062.35252774,
"avgSpeedGps": 2,
"avgSpeedImp": 2.56,
"avgPower": 68.6979270660324,
"avgCatch": -46.7961491475831,
"avgSlip": 16.1616225246003,
"avgFinish": 48.1512290049444,
"avgWash": 22.9514686031976,
"avgForceAvg": 114.502194258813,
"avgWork": 210.785493336831,
"avgForceMax": 249.481436977143,
"avgMaxForceAngle": 4.75378911974861,
"startGpsLat": 39.7356346,
"startGpsLon": -75.5581928
}
],
"oarlockSessions": [
{
"id": 1,
"sessionId": 1,
"boatName": "Fast Boat",
"seatNumber": 3,
"portStarboard": 0,
"oarLength": 284,
"oarInboardLength": 85
}
]
}
]