API - return records with user data
This commit is contained in:
		@@ -431,6 +431,7 @@ class TestUserProfile(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['language'] is None
 | 
			
		||||
        assert data['data']['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['records'] == []
 | 
			
		||||
        assert data['data']['sports_list'] == []
 | 
			
		||||
        assert data['data']['total_distance'] == 0
 | 
			
		||||
        assert data['data']['total_duration'] == '0:00:00'
 | 
			
		||||
@@ -463,6 +464,7 @@ class TestUserProfile(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['language'] == 'en'
 | 
			
		||||
        assert data['data']['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['records'] == []
 | 
			
		||||
        assert data['data']['sports_list'] == []
 | 
			
		||||
        assert data['data']['total_distance'] == 0
 | 
			
		||||
        assert data['data']['total_duration'] == '0:00:00'
 | 
			
		||||
@@ -494,6 +496,7 @@ class TestUserProfile(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['timezone'] is None
 | 
			
		||||
        assert data['data']['nb_sports'] == 2
 | 
			
		||||
        assert data['data']['nb_workouts'] == 2
 | 
			
		||||
        assert len(data['data']['records']) == 6
 | 
			
		||||
        assert data['data']['sports_list'] == [1, 2]
 | 
			
		||||
        assert data['data']['total_distance'] == 22
 | 
			
		||||
        assert data['data']['total_duration'] == '2:40:00'
 | 
			
		||||
@@ -552,6 +555,7 @@ class TestUserProfileUpdate(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['language'] == 'fr'
 | 
			
		||||
        assert data['data']['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['records'] == []
 | 
			
		||||
        assert data['data']['sports_list'] == []
 | 
			
		||||
        assert data['data']['total_distance'] == 0
 | 
			
		||||
        assert data['data']['total_duration'] == '0:00:00'
 | 
			
		||||
@@ -597,6 +601,7 @@ class TestUserProfileUpdate(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['language'] == 'fr'
 | 
			
		||||
        assert data['data']['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['records'] == []
 | 
			
		||||
        assert data['data']['sports_list'] == []
 | 
			
		||||
        assert data['data']['total_distance'] == 0
 | 
			
		||||
        assert data['data']['total_duration'] == '0:00:00'
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,7 @@ class TestGetUser(ApiTestCaseMixin):
 | 
			
		||||
        assert user['language'] is None
 | 
			
		||||
        assert user['nb_sports'] == 0
 | 
			
		||||
        assert user['nb_workouts'] == 0
 | 
			
		||||
        assert user['records'] == []
 | 
			
		||||
        assert user['sports_list'] == []
 | 
			
		||||
        assert user['total_distance'] == 0
 | 
			
		||||
        assert user['total_duration'] == '0:00:00'
 | 
			
		||||
@@ -80,6 +81,7 @@ class TestGetUser(ApiTestCaseMixin):
 | 
			
		||||
        assert user['timezone'] is None
 | 
			
		||||
        assert user['weekm'] is False
 | 
			
		||||
        assert user['language'] is None
 | 
			
		||||
        assert len(user['records']) == 6
 | 
			
		||||
        assert user['nb_sports'] == 2
 | 
			
		||||
        assert user['nb_workouts'] == 2
 | 
			
		||||
        assert user['sports_list'] == [1, 2]
 | 
			
		||||
@@ -132,6 +134,7 @@ class TestGetUsers(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['users'][0]['language'] is None
 | 
			
		||||
        assert data['data']['users'][0]['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['users'][0]['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['users'][0]['records'] == []
 | 
			
		||||
        assert data['data']['users'][0]['sports_list'] == []
 | 
			
		||||
        assert data['data']['users'][0]['total_distance'] == 0
 | 
			
		||||
        assert data['data']['users'][0]['total_duration'] == '0:00:00'
 | 
			
		||||
@@ -140,12 +143,14 @@ class TestGetUsers(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['users'][1]['language'] is None
 | 
			
		||||
        assert data['data']['users'][1]['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['users'][1]['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['users'][1]['records'] == []
 | 
			
		||||
        assert data['data']['users'][1]['sports_list'] == []
 | 
			
		||||
        assert data['data']['users'][1]['total_distance'] == 0
 | 
			
		||||
        assert data['data']['users'][1]['total_duration'] == '0:00:00'
 | 
			
		||||
        assert data['data']['users'][2]['timezone'] is None
 | 
			
		||||
        assert data['data']['users'][2]['weekm'] is True
 | 
			
		||||
        assert data['data']['users'][2]['language'] is None
 | 
			
		||||
        assert data['data']['users'][2]['records'] == []
 | 
			
		||||
        assert data['data']['users'][2]['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['users'][2]['nb_workouts'] == 0
 | 
			
		||||
        assert data['data']['users'][2]['sports_list'] == []
 | 
			
		||||
@@ -195,6 +200,7 @@ class TestGetUsers(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['users'][0]['weekm'] is False
 | 
			
		||||
        assert data['data']['users'][0]['nb_sports'] == 2
 | 
			
		||||
        assert data['data']['users'][0]['nb_workouts'] == 2
 | 
			
		||||
        assert len(data['data']['users'][0]['records']) == 6
 | 
			
		||||
        assert data['data']['users'][0]['sports_list'] == [1, 2]
 | 
			
		||||
        assert data['data']['users'][0]['total_distance'] == 22.0
 | 
			
		||||
        assert data['data']['users'][0]['total_duration'] == '2:40:00'
 | 
			
		||||
@@ -202,6 +208,7 @@ class TestGetUsers(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['users'][1]['weekm'] is False
 | 
			
		||||
        assert data['data']['users'][1]['nb_sports'] == 1
 | 
			
		||||
        assert data['data']['users'][1]['nb_workouts'] == 1
 | 
			
		||||
        assert len(data['data']['users'][1]['records']) == 2
 | 
			
		||||
        assert data['data']['users'][1]['sports_list'] == [1]
 | 
			
		||||
        assert data['data']['users'][1]['total_distance'] == 15
 | 
			
		||||
        assert data['data']['users'][1]['total_duration'] == '1:00:00'
 | 
			
		||||
@@ -209,6 +216,7 @@ class TestGetUsers(ApiTestCaseMixin):
 | 
			
		||||
        assert data['data']['users'][2]['weekm'] is True
 | 
			
		||||
        assert data['data']['users'][2]['nb_sports'] == 0
 | 
			
		||||
        assert data['data']['users'][2]['nb_workouts'] == 0
 | 
			
		||||
        assert len(data['data']['users'][2]['records']) == 0
 | 
			
		||||
        assert data['data']['users'][2]['sports_list'] == []
 | 
			
		||||
        assert data['data']['users'][2]['total_distance'] == 0
 | 
			
		||||
        assert data['data']['users'][2]['total_duration'] == '0:00:00'
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
from flask import Flask
 | 
			
		||||
 | 
			
		||||
from fittrackee.users.models import User
 | 
			
		||||
from fittrackee.workouts.models import Sport, Workout
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestUserModel:
 | 
			
		||||
@@ -22,6 +23,8 @@ class TestUserModel:
 | 
			
		||||
        assert serialized_user['language'] is None
 | 
			
		||||
        assert serialized_user['nb_sports'] == 0
 | 
			
		||||
        assert serialized_user['nb_workouts'] == 0
 | 
			
		||||
        assert serialized_user['records'] == []
 | 
			
		||||
        assert serialized_user['sports_list'] == []
 | 
			
		||||
        assert serialized_user['total_distance'] == 0
 | 
			
		||||
        assert serialized_user['total_duration'] == '0:00:00'
 | 
			
		||||
 | 
			
		||||
@@ -37,3 +40,22 @@ class TestUserModel:
 | 
			
		||||
        auth_token = user_1.encode_auth_token(user_1.id)
 | 
			
		||||
        assert isinstance(auth_token, str)
 | 
			
		||||
        assert User.decode_auth_token(auth_token) == user_1.id
 | 
			
		||||
 | 
			
		||||
    def test_it_returns_user_records(
 | 
			
		||||
        self,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        sport_1_cycling: Sport,
 | 
			
		||||
        workout_cycling_user_1: Workout,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        serialized_user = user_1.serialize()
 | 
			
		||||
        assert len(serialized_user['records']) == 4
 | 
			
		||||
        assert serialized_user['records'][0]['record_type'] == 'AS'
 | 
			
		||||
        assert serialized_user['records'][0]['sport_id'] == sport_1_cycling.id
 | 
			
		||||
        assert serialized_user['records'][0]['user'] == user_1.username
 | 
			
		||||
        assert serialized_user['records'][0]['value'] > 0
 | 
			
		||||
        assert (
 | 
			
		||||
            serialized_user['records'][0]['workout_id']
 | 
			
		||||
            == workout_cycling_user_1.short_id
 | 
			
		||||
        )
 | 
			
		||||
        assert serialized_user['records'][0]['workout_date']
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user