Changeset 0dedfbe in OpenWorkouts-current for ow/tests/views/test_workout.py


Ignore:
Timestamp:
Apr 22, 2019, 10:47:55 PM (5 years ago)
Author:
Borja Lopez <borja@…>
Branches:
current
Children:
a6fa857
Parents:
42baca4
Message:

(#39) Duplicated workouts, fixed broken tests, added more tests coverage

File:
1 edited

Legend:

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

    r42baca4 r0dedfbe  
    182182        assert len(response['form'].form.errors) == 0
    183183        assert isinstance(response['form'].form.schema, UploadedWorkoutSchema)
     184        assert response['duplicate'] is None
    184185
    185186    def test_add_workout_post_invalid(self, dummy_request):
     
    196197        # Only one required field in this case, the tracking file
    197198        assert len(response['form'].form.errors) == 1
     199        assert response['duplicate'] is None
    198200
    199201    def test_add_workout_post_invalid_bytes(self, dummy_request):
     
    214216        # Only one required field in this case, the tracking file
    215217        assert len(response['form'].form.errors) == 1
     218        assert response['duplicate'] is None
    216219
    217220    @pytest.mark.parametrize('filename', gpx_filenames)
     
    234237        assert response.location.endswith('/2/')
    235238        assert len(request.root['john'].workouts()) == 2
     239        self.close_uploaded_file(uploaded_file)
     240
     241    def test_add_workout_post_duplicate(self, dummy_request):
     242        """
     243        POST request, first add a workout uploading one of the sample
     244        tracking files, then try to upload it again.
     245        """
     246        # first, upload the workout
     247        filename = self.gpx_filenames[0]
     248        request = dummy_request
     249        uploaded_file = self.open_uploaded_file(filename)
     250        filestorage = self.create_filestorage(uploaded_file)
     251        user = request.root['john']
     252        request.method = 'POST'
     253        request.POST = MultiDict({
     254            'tracking_file': filestorage,
     255            'submit': True,
     256            })
     257        assert len(request.root['john'].workouts()) == 1
     258        response = workout_views.add_workout(user, request)
     259        assert isinstance(response, HTTPFound)
     260        assert response.location.endswith('/2/')
     261        assert len(request.root['john'].workouts()) == 2
     262        self.close_uploaded_file(uploaded_file)
     263        # now, try to upload it again
     264        uploaded_file = self.open_uploaded_file(filename)
     265        filestorage = self.create_filestorage(uploaded_file)
     266        user = request.root['john']
     267        request.method = 'POST'
     268        request.POST = MultiDict({
     269            'tracking_file': filestorage,
     270            'submit': True,
     271            })
     272        response = workout_views.add_workout(user, request)
     273        assert response['duplicate'] == request.root['john']['2']
     274        assert len(request.root['john'].workouts()) == 2
     275        self.close_uploaded_file(uploaded_file)
     276        # finally, override the duplicate prevention code and save it
     277        uploaded_file = self.open_uploaded_file(filename)
     278        filestorage = self.create_filestorage(uploaded_file)
     279        user = request.root['john']
     280        request.method = 'POST'
     281        request.POST = MultiDict({
     282            'tracking_file': filestorage,
     283            'allow_duplicates': 'on',
     284            'submit': True,
     285            })
     286        response = workout_views.add_workout(user, request)
     287        assert isinstance(response, HTTPFound)
     288        assert response.location.endswith('/3/')
     289        assert len(request.root['john'].workouts()) == 3
    236290        self.close_uploaded_file(uploaded_file)
    237291
Note: See TracChangeset for help on using the changeset viewer.