From 076ca6e7651fa810a3d0bbd9d923adf10845080f Mon Sep 17 00:00:00 2001 From: Artem Muterko Date: Thu, 19 Jan 2017 12:43:18 +0200 Subject: [PATCH 1/2] Add test for filter_renderers --- tests/test_negotiation.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/test_negotiation.py b/tests/test_negotiation.py index 62f1cf40f..cec6608e6 100644 --- a/tests/test_negotiation.py +++ b/tests/test_negotiation.py @@ -1,5 +1,7 @@ from __future__ import unicode_literals +import pytest +from django.http import Http404 from django.test import TestCase from rest_framework.negotiation import DefaultContentNegotiation @@ -78,3 +80,10 @@ class TestAcceptedMediaType(TestCase): params_str += '; %s=%s' % (key, val) expected = 'test/*' + params_str assert str(mediatype) == expected + + def test_raise_error_if_no_suitable_renderers_found(self): + class MockRenderer(object): + format = 'xml' + renderers = [MockRenderer()] + with pytest.raises(Http404): + self.negotiator.filter_renderers(renderers, format='json') From c2ce2fb3f05da00134d5fc671f017ea3eed3c66f Mon Sep 17 00:00:00 2001 From: Artem Muterko Date: Thu, 19 Jan 2017 12:50:17 +0200 Subject: [PATCH 2/2] Add tests for BaseContentNegotiation --- tests/test_negotiation.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/test_negotiation.py b/tests/test_negotiation.py index cec6608e6..b435b876a 100644 --- a/tests/test_negotiation.py +++ b/tests/test_negotiation.py @@ -4,7 +4,9 @@ import pytest from django.http import Http404 from django.test import TestCase -from rest_framework.negotiation import DefaultContentNegotiation +from rest_framework.negotiation import ( + BaseContentNegotiation, DefaultContentNegotiation +) from rest_framework.renderers import BaseRenderer from rest_framework.request import Request from rest_framework.test import APIRequestFactory @@ -87,3 +89,17 @@ class TestAcceptedMediaType(TestCase): renderers = [MockRenderer()] with pytest.raises(Http404): self.negotiator.filter_renderers(renderers, format='json') + + +class BaseContentNegotiationTests(TestCase): + + def setUp(self): + self.negotiator = BaseContentNegotiation() + + def test_raise_error_for_abstract_select_parser_method(self): + with pytest.raises(NotImplementedError): + self.negotiator.select_parser(None, None) + + def test_raise_error_for_abstract_select_renderer_method(self): + with pytest.raises(NotImplementedError): + self.negotiator.select_renderer(None, None)