Changeset 24596da in OpenWorkouts-current for ow/tests/views/test_user.py


Ignore:
Timestamp:
Feb 27, 2019, 6:28:07 PM (5 years ago)
Author:
Borja Lopez <borja@…>
Branches:
current, feature/docs, master
Children:
cef474f
Parents:
68d00f5
Message:

Added missing tests, raised overall coverage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ow/tests/views/test_user.py

    r68d00f5 r24596da  
    1313
    1414from pyramid.testing import DummyRequest
    15 from pyramid.httpexceptions import HTTPFound
     15from pyramid.httpexceptions import HTTPFound, HTTPNotFound
    1616from pyramid.response import Response
    1717
     
    475475        }
    476476
     477    def test_profile_with_nickname(self, dummy_request, john):
     478        """
     479        Loading the profile page using the user nickname
     480        """
     481        request = dummy_request
     482        john.nickname = 'JohnDoe'
     483        request.root.reindex(john)
     484        # first load using the uuid
     485        response_uuid = user_views.profile(john, request)
     486        # now, do it with the nickname
     487        request.subpath = ['JohnDoe']
     488        response_nickname = user_views.profile(request.root, request)
     489        assert response_uuid == response_nickname
     490        # try an unknown nickname, HTTPNotFound is returned
     491        request.subpath = ['Invalid']
     492        response_nickname = user_views.profile(request.root, request)
     493        assert isinstance(response_nickname, HTTPNotFound)
     494
    477495    def test_login_get(self, dummy_request):
    478496        """
     
    675693        returned_image = Image.open(BytesIO(response.body))
    676694        assert original_image.size == returned_image.size
     695
     696    def test_profile_picture_none(self, dummy_request, john):
     697        """
     698        GET request for an user without a profile picture
     699        """
     700        request = dummy_request
     701        user = john
     702        response = user_views.profile_picture(user, request)
     703        assert isinstance(response, HTTPNotFound)
    677704
    678705    def test_edit_profile_get(self, dummy_request, john):
     
    10021029                day['time'] == '00'
    10031030                day['workouts'] == 0
     1031
     1032    def test_last_months_stats(self, dummy_request, john):
     1033        request = dummy_request
     1034        user = john
     1035        response = user_views.last_months_stats(user, request)
     1036        assert isinstance(response, Response)
     1037        assert response.content_type == 'application/json'
     1038        # the body is a valid json-encoded stream
     1039        obj = json.loads(response.body)
     1040        assert len(obj) == 13
     1041        for month in obj:
     1042            assert len(month.keys()) == 7
     1043            assert 'id' in month.keys()
     1044            assert 'name' in month.keys()
     1045            assert month['distance'] == 0
     1046            assert month['elevation'] == 0
     1047            assert month['time'] == '00'
     1048            assert month['workouts'] == 0
     1049            assert str(user.uid) in month['url']
     1050            assert 'profile' in month['url']
     1051            assert 'year' in month['url']
     1052            assert 'month' in month['url']
     1053
     1054        # try now with a workout
     1055        workout_start = datetime.now(timezone.utc)
     1056        workout_start_id = (
     1057            str(workout_start.year) + '-' + str(workout_start.month).zfill(2))
     1058        workout = Workout(
     1059            sport='cycling',
     1060            start=workout_start,
     1061            duration=timedelta(minutes=60),
     1062            distance=30,
     1063            uphill=540
     1064        )
     1065        user.add_workout(workout)
     1066        response = user_views.last_months_stats(user, request)
     1067        assert isinstance(response, Response)
     1068        assert response.content_type == 'application/json'
     1069        # the body is a valid json-encoded stream
     1070        obj = json.loads(response.body)
     1071        assert len(obj) == 13
     1072        for month in obj:
     1073            assert len(month.keys()) == 7
     1074            assert 'id' in month.keys()
     1075            assert 'name' in month.keys()
     1076            assert str(user.uid) in month['url']
     1077            assert 'profile' in month['url']
     1078            assert 'year' in month['url']
     1079            assert 'month' in month['url']
     1080            if month['id'] == workout_start_id:
     1081                assert month['distance'] == 30
     1082                assert month['elevation'] == 540
     1083                assert month['time'] == '01'
     1084                assert month['workouts'] == 1
     1085            else:
     1086                assert month['distance'] == 0
     1087                assert month['elevation'] == 0
     1088                assert month['time'] == '00'
     1089                assert month['workouts'] == 0
     1090
     1091    def test_last_weeks_stats(self, dummy_request, john):
     1092        request = dummy_request
     1093        user = john
     1094        response = user_views.last_weeks_stats(user, request)
     1095        assert isinstance(response, Response)
     1096        assert response.content_type == 'application/json'
     1097        # the body is a valid json-encoded stream
     1098        obj = json.loads(response.body)
     1099        assert len(obj) == 68
     1100        for week in obj:
     1101            assert len(week.keys()) == 8
     1102            assert 'id' in week.keys()
     1103            assert 'name' in week.keys()
     1104            assert 'week' in week.keys()
     1105            assert week['distance'] == 0
     1106            assert week['elevation'] == 0
     1107            assert week['time'] == '00'
     1108            assert week['workouts'] == 0
     1109            assert str(user.uid) in week['url']
     1110            assert 'profile' in week['url']
     1111            assert 'year' in week['url']
     1112            assert 'month' in week['url']
     1113            assert 'week' in week['url']
     1114
     1115        # try now with a workout
     1116        workout_start = datetime.now(timezone.utc)
     1117        workout_start_id = str(workout_start.year)
     1118        workout_start_id += '-' + str(workout_start.month).zfill(2)
     1119        workout_start_id += '-' + str(workout_start.isocalendar()[1])
     1120        workout = Workout(
     1121            sport='cycling',
     1122            start=workout_start,
     1123            duration=timedelta(minutes=60),
     1124            distance=30,
     1125            uphill=540
     1126        )
     1127        user.add_workout(workout)
     1128        response = user_views.last_weeks_stats(user, request)
     1129        assert isinstance(response, Response)
     1130        assert response.content_type == 'application/json'
     1131        # the body is a valid json-encoded stream
     1132        obj = json.loads(response.body)
     1133        assert len(obj) == 68
     1134        for week in obj:
     1135            assert len(week.keys()) == 8
     1136            assert 'id' in week.keys()
     1137            assert 'name' in week.keys()
     1138            assert 'week' in week.keys()
     1139            assert str(user.uid) in week['url']
     1140            assert 'profile' in week['url']
     1141            assert 'year' in week['url']
     1142            assert 'month' in week['url']
     1143            assert 'week' in week['url']
     1144            if week['id'] == workout_start_id:
     1145                assert week['distance'] == 30
     1146                assert week['elevation'] == 540
     1147                assert week['time'] == '01'
     1148                assert week['workouts'] == 1
     1149            else:
     1150                assert week['distance'] == 0
     1151                assert week['elevation'] == 0
     1152                assert week['time'] == '00'
     1153                assert week['workouts'] == 0
Note: See TracChangeset for help on using the changeset viewer.