API: display user statistics in users routes
This commit is contained in:
		@@ -21,11 +21,49 @@ def test_single_user(app, user_1):
 | 
				
			|||||||
    data = json.loads(response.data.decode())
 | 
					    data = json.loads(response.data.decode())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert response.status_code == 200
 | 
					    assert response.status_code == 200
 | 
				
			||||||
    assert 'success' in data['status']
 | 
					    assert data['status'] == 'success'
 | 
				
			||||||
 | 
					    assert data['data'] is not None
 | 
				
			||||||
 | 
					    assert data['data']['username'] == 'test'
 | 
				
			||||||
 | 
					    assert data['data']['email'] == 'test@test.com'
 | 
				
			||||||
 | 
					    assert data['data']['created_at']
 | 
				
			||||||
 | 
					    assert not data['data']['admin']
 | 
				
			||||||
 | 
					    assert data['data']['first_name'] is None
 | 
				
			||||||
 | 
					    assert data['data']['last_name'] is None
 | 
				
			||||||
 | 
					    assert data['data']['birth_date'] is None
 | 
				
			||||||
 | 
					    assert data['data']['bio'] is None
 | 
				
			||||||
 | 
					    assert data['data']['location'] is None
 | 
				
			||||||
 | 
					    assert data['data']['nb_activities'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['nb_sports'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['total_distance'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['total_duration'] == '0:00:00'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert 'created_at' in data['data']
 | 
					
 | 
				
			||||||
    assert 'test' in data['data']['username']
 | 
					def test_single_user_with_activities(
 | 
				
			||||||
    assert 'test@test.com' in data['data']['email']
 | 
					        app, user_1, sport_1_cycling, sport_2_running,
 | 
				
			||||||
 | 
					        activity_cycling_user_1, activity_running_user_1
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
 | 
					    """=> Get single user details"""
 | 
				
			||||||
 | 
					    client = app.test_client()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    response = client.get(f'/api/users/{user_1.id}')
 | 
				
			||||||
 | 
					    data = json.loads(response.data.decode())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert response.status_code == 200
 | 
				
			||||||
 | 
					    assert data['status'] == 'success'
 | 
				
			||||||
 | 
					    assert data['data'] is not None
 | 
				
			||||||
 | 
					    assert data['data']['username'] == 'test'
 | 
				
			||||||
 | 
					    assert data['data']['email'] == 'test@test.com'
 | 
				
			||||||
 | 
					    assert data['data']['created_at']
 | 
				
			||||||
 | 
					    assert not data['data']['admin']
 | 
				
			||||||
 | 
					    assert data['data']['first_name'] is None
 | 
				
			||||||
 | 
					    assert data['data']['last_name'] is None
 | 
				
			||||||
 | 
					    assert data['data']['birth_date'] is None
 | 
				
			||||||
 | 
					    assert data['data']['bio'] is None
 | 
				
			||||||
 | 
					    assert data['data']['location'] is None
 | 
				
			||||||
 | 
					    assert data['data']['nb_activities'] == 2
 | 
				
			||||||
 | 
					    assert data['data']['nb_sports'] == 2
 | 
				
			||||||
 | 
					    assert data['data']['total_distance'] == 22
 | 
				
			||||||
 | 
					    assert data['data']['total_duration'] == '1:57:04'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_single_user_no_id(app):
 | 
					def test_single_user_no_id(app):
 | 
				
			||||||
@@ -67,6 +105,14 @@ def test_users_list(app, user_1, user_2):
 | 
				
			|||||||
    assert 'toto' in data['data']['users'][1]['username']
 | 
					    assert 'toto' in data['data']['users'][1]['username']
 | 
				
			||||||
    assert 'test@test.com' in data['data']['users'][0]['email']
 | 
					    assert 'test@test.com' in data['data']['users'][0]['email']
 | 
				
			||||||
    assert 'toto@toto.com' in data['data']['users'][1]['email']
 | 
					    assert 'toto@toto.com' in data['data']['users'][1]['email']
 | 
				
			||||||
 | 
					    assert data['data']['users'][0]['nb_activities'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['users'][0]['nb_sports'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['users'][0]['total_distance'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['users'][0]['total_duration'] == '0:00:00'
 | 
				
			||||||
 | 
					    assert data['data']['users'][1]['nb_activities'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['users'][1]['nb_sports'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['users'][1]['total_distance'] == 0
 | 
				
			||||||
 | 
					    assert data['data']['users'][1]['total_duration'] == '0:00:00'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_encode_auth_token(app, user_1):
 | 
					def test_encode_auth_token(app, user_1):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,19 +9,10 @@ users_blueprint = Blueprint('users', __name__)
 | 
				
			|||||||
def get_users():
 | 
					def get_users():
 | 
				
			||||||
    """Get all users"""
 | 
					    """Get all users"""
 | 
				
			||||||
    users = User.query.all()
 | 
					    users = User.query.all()
 | 
				
			||||||
    users_list = []
 | 
					 | 
				
			||||||
    for user in users:
 | 
					 | 
				
			||||||
        user_object = {
 | 
					 | 
				
			||||||
            'id': user.id,
 | 
					 | 
				
			||||||
            'username': user.username,
 | 
					 | 
				
			||||||
            'email': user.email,
 | 
					 | 
				
			||||||
            'created_at': user.created_at
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        users_list.append(user_object)
 | 
					 | 
				
			||||||
    response_object = {
 | 
					    response_object = {
 | 
				
			||||||
        'status': 'success',
 | 
					        'status': 'success',
 | 
				
			||||||
        'data': {
 | 
					        'data': {
 | 
				
			||||||
            'users': users_list
 | 
					            'users': [user.serialize() for user in users]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return jsonify(response_object), 200
 | 
					    return jsonify(response_object), 200
 | 
				
			||||||
@@ -41,11 +32,7 @@ def get_single_user(user_id):
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            response_object = {
 | 
					            response_object = {
 | 
				
			||||||
                'status': 'success',
 | 
					                'status': 'success',
 | 
				
			||||||
                'data': {
 | 
					                'data': user.serialize()
 | 
				
			||||||
                    'username': user.username,
 | 
					 | 
				
			||||||
                    'email': user.email,
 | 
					 | 
				
			||||||
                    'created_at': user.created_at
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return jsonify(response_object), 200
 | 
					            return jsonify(response_object), 200
 | 
				
			||||||
    except ValueError:
 | 
					    except ValueError:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user