API - fix workouts sort on duration (= moving time)
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
import json
 | 
			
		||||
from datetime import timedelta
 | 
			
		||||
from typing import List
 | 
			
		||||
from unittest.mock import patch
 | 
			
		||||
from uuid import uuid4
 | 
			
		||||
@@ -6,6 +7,7 @@ from uuid import uuid4
 | 
			
		||||
import pytest
 | 
			
		||||
from flask import Flask
 | 
			
		||||
 | 
			
		||||
from fittrackee import db
 | 
			
		||||
from fittrackee.users.models import User
 | 
			
		||||
from fittrackee.workouts.models import Sport, Workout
 | 
			
		||||
 | 
			
		||||
@@ -558,7 +560,7 @@ class TestGetWorkoutsWithOrderBy(ApiTestCaseMixin):
 | 
			
		||||
            'total': 7,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    def test_it_gets_workouts_ordered_by_duration(
 | 
			
		||||
    def test_it_gets_workouts_ordered_by_moving_time(
 | 
			
		||||
        self,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
@@ -568,6 +570,10 @@ class TestGetWorkoutsWithOrderBy(ApiTestCaseMixin):
 | 
			
		||||
        client, auth_token = self.get_test_client_and_auth_token(
 | 
			
		||||
            app, user_1.email
 | 
			
		||||
        )
 | 
			
		||||
        seven_workouts_user_1[6].duration = seven_workouts_user_1[
 | 
			
		||||
            6
 | 
			
		||||
        ].moving + timedelta(seconds=1000)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
 | 
			
		||||
        response = client.get(
 | 
			
		||||
            '/api/workouts?order_by=duration',
 | 
			
		||||
@@ -579,7 +585,23 @@ class TestGetWorkoutsWithOrderBy(ApiTestCaseMixin):
 | 
			
		||||
        assert 'success' in data['status']
 | 
			
		||||
        assert len(data['data']['workouts']) == 5
 | 
			
		||||
        assert '1:40:00' == data['data']['workouts'][0]['duration']
 | 
			
		||||
        assert '0:17:04' == data['data']['workouts'][4]['duration']
 | 
			
		||||
        assert '1:40:00' == data['data']['workouts'][0]['moving']
 | 
			
		||||
        assert (
 | 
			
		||||
            'Sun, 01 Apr 2018 00:00:00 GMT'
 | 
			
		||||
            == data['data']['workouts'][0]['workout_date']
 | 
			
		||||
        )
 | 
			
		||||
        assert '0:57:36' == data['data']['workouts'][1]['duration']
 | 
			
		||||
        assert '0:57:36' == data['data']['workouts'][1]['moving']
 | 
			
		||||
        assert (
 | 
			
		||||
            'Thu, 01 Jun 2017 00:00:00 GMT'
 | 
			
		||||
            == data['data']['workouts'][1]['workout_date']
 | 
			
		||||
        )
 | 
			
		||||
        assert '1:06:40' == data['data']['workouts'][2]['duration']
 | 
			
		||||
        assert '0:50:00' == data['data']['workouts'][2]['moving']
 | 
			
		||||
        assert (
 | 
			
		||||
            'Wed, 09 May 2018 00:00:00 GMT'
 | 
			
		||||
            == data['data']['workouts'][2]['workout_date']
 | 
			
		||||
        )
 | 
			
		||||
        assert data['pagination'] == {
 | 
			
		||||
            'has_next': True,
 | 
			
		||||
            'has_prev': False,
 | 
			
		||||
 
 | 
			
		||||
@@ -224,8 +224,9 @@ def get_workouts(auth_user: User) -> Union[Dict, HttpResponse]:
 | 
			
		||||
        ave_speed_to = params.get('ave_speed_to')
 | 
			
		||||
        max_speed_from = params.get('max_speed_from')
 | 
			
		||||
        max_speed_to = params.get('max_speed_to')
 | 
			
		||||
        order_by = params.get('order_by', 'workout_date')
 | 
			
		||||
        workout_column = getattr(
 | 
			
		||||
            Workout, params.get('order_by', 'workout_date')
 | 
			
		||||
            Workout, 'moving' if order_by == 'duration' else order_by
 | 
			
		||||
        )
 | 
			
		||||
        order = params.get('order', 'desc')
 | 
			
		||||
        sport_id = params.get('sport_id')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user