mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 09:57:55 +03:00 
			
		
		
		
	* Get rid of runtests.py * Moved test code from rest_framework/tests and rest_framework/runtests to tests * Invoke py.test from setup.py * Invoke py.test from Travis * Invoke py.test from tox * Changed setUpClass to be just plain setUp in test_permissions.py * Updated contribution guideline to show how to invoke py.test
		
			
				
	
	
		
			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')
 |