diff options
| author | Xavier Ordoquy | 2014-04-17 09:53:44 +0200 | 
|---|---|---|
| committer | Xavier Ordoquy | 2014-04-17 09:53:44 +0200 | 
| commit | 1797a74e828c9fdfbfb46bb4de049100b18db875 (patch) | |
| tree | a91e8f4ff22e8eb63a990a439995632e9198d1c3 /tests/test_negotiation.py | |
| parent | 1d404874b3f0f5b16f3b38ba322f31a18c41aad6 (diff) | |
| parent | 971578ca345c3d3bae7fd93b87c41d43483b6f05 (diff) | |
| download | django-rest-framework-1797a74e828c9fdfbfb46bb4de049100b18db875.tar.bz2 | |
Merge remote-tracking branch 'pelme/pytest' into feature/pytest
Conflicts:
	.travis.yml
	rest_framework/runtests/runtests.py
	tests/test_filters.py
	tests/test_pagination.py
	tox.ini
Diffstat (limited to 'tests/test_negotiation.py')
| -rw-r--r-- | tests/test_negotiation.py | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/tests/test_negotiation.py b/tests/test_negotiation.py new file mode 100644 index 00000000..04b89eb6 --- /dev/null +++ b/tests/test_negotiation.py @@ -0,0 +1,45 @@ +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') | 
