mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-30 23:47:53 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import unicode_literals
 | |
| from django.test import TestCase
 | |
| from rest_framework.negotiation import DefaultContentNegotiation
 | |
| from rest_framework.request import Request
 | |
| from rest_framework.renderers import BaseRenderer
 | |
| from rest_framework.test import APIRequestFactory
 | |
| 
 | |
| 
 | |
| factory = APIRequestFactory()
 | |
| 
 | |
| 
 | |
| class MockJSONRenderer(BaseRenderer):
 | |
|     media_type = 'application/json'
 | |
| 
 | |
| 
 | |
| class MockHTMLRenderer(BaseRenderer):
 | |
|     media_type = 'text/html'
 | |
| 
 | |
| 
 | |
| class NoCharsetSpecifiedRenderer(BaseRenderer):
 | |
|     media_type = 'my/media'
 | |
| 
 | |
| 
 | |
| class TestAcceptedMediaType(TestCase):
 | |
|     def setUp(self):
 | |
|         self.renderers = [MockJSONRenderer(), MockHTMLRenderer()]
 | |
|         self.negotiator = DefaultContentNegotiation()
 | |
| 
 | |
|     def select_renderer(self, request):
 | |
|         return self.negotiator.select_renderer(request, self.renderers)
 | |
| 
 | |
|     def test_client_without_accept_use_renderer(self):
 | |
|         request = Request(factory.get('/'))
 | |
|         accepted_renderer, accepted_media_type = self.select_renderer(request)
 | |
|         self.assertEqual(accepted_media_type, 'application/json')
 | |
| 
 | |
|     def test_client_underspecifies_accept_use_renderer(self):
 | |
|         request = Request(factory.get('/', HTTP_ACCEPT='*/*'))
 | |
|         accepted_renderer, accepted_media_type = self.select_renderer(request)
 | |
|         self.assertEqual(accepted_media_type, 'application/json')
 | |
| 
 | |
|     def test_client_overspecifies_accept_use_client(self):
 | |
|         request = Request(factory.get('/', HTTP_ACCEPT='application/json; indent=8'))
 | |
|         accepted_renderer, accepted_media_type = self.select_renderer(request)
 | |
|         self.assertEqual(accepted_media_type, 'application/json; indent=8')
 |