mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 09:57:55 +03:00 
			
		
		
		
	fix URLPathVersioning reverse fallback (#7247)
* fix URLPathVersioning reverse fallback * add test for URLPathVersioning reverse fallback * Update tests/test_versioning.py --------- Co-authored-by: Jorn van Wier <jorn.van.wier@thunderbyte.ai> Co-authored-by: Asif Saif Uddin <auvipy@gmail.com>
This commit is contained in:
		
							parent
							
								
									332e9560ab
								
							
						
					
					
						commit
						a25aac7d67
					
				| 
						 | 
				
			
			@ -81,8 +81,10 @@ class URLPathVersioning(BaseVersioning):
 | 
			
		|||
 | 
			
		||||
    def reverse(self, viewname, args=None, kwargs=None, request=None, format=None, **extra):
 | 
			
		||||
        if request.version is not None:
 | 
			
		||||
            kwargs = {} if (kwargs is None) else kwargs
 | 
			
		||||
            kwargs[self.version_param] = request.version
 | 
			
		||||
            kwargs = {
 | 
			
		||||
                self.version_param: request.version,
 | 
			
		||||
                **(kwargs or {})
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        return super().reverse(
 | 
			
		||||
            viewname, args, kwargs, request, format, **extra
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -152,6 +152,8 @@ class TestURLReversing(URLPatternsTestCase, APITestCase):
 | 
			
		|||
        path('v1/', include((included, 'v1'), namespace='v1')),
 | 
			
		||||
        path('another/', dummy_view, name='another'),
 | 
			
		||||
        re_path(r'^(?P<version>[v1|v2]+)/another/$', dummy_view, name='another'),
 | 
			
		||||
        re_path(r'^(?P<foo>.+)/unversioned/$', dummy_view, name='unversioned'),
 | 
			
		||||
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    def test_reverse_unversioned(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +200,14 @@ class TestURLReversing(URLPatternsTestCase, APITestCase):
 | 
			
		|||
        response = view(request)
 | 
			
		||||
        assert response.data == {'url': 'http://testserver/another/'}
 | 
			
		||||
 | 
			
		||||
        # Test fallback when kwargs is not None
 | 
			
		||||
        request = factory.get('/v1/endpoint/')
 | 
			
		||||
        request.versioning_scheme = scheme()
 | 
			
		||||
        request.version = 'v1'
 | 
			
		||||
 | 
			
		||||
        reversed_url = reverse('unversioned', request=request, kwargs={'foo': 'bar'})
 | 
			
		||||
        assert reversed_url == 'http://testserver/bar/unversioned/'
 | 
			
		||||
 | 
			
		||||
    def test_reverse_namespace_versioning(self):
 | 
			
		||||
        class FakeResolverMatch(ResolverMatch):
 | 
			
		||||
            namespace = 'v1'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user