Remove last bits of ParserMixin

This commit is contained in:
Tom Christie 2011-04-11 13:22:54 +01:00
parent 92b5a455da
commit 941742593c
4 changed files with 5 additions and 57 deletions

View File

@ -24,10 +24,6 @@ try:
except ImportError: except ImportError:
from cgi import parse_qs from cgi import parse_qs
class ParserMixin(object):
parsers = ()
class BaseParser(object): class BaseParser(object):

View File

@ -9,7 +9,7 @@ from django.http.multipartparser import LimitBytes
from StringIO import StringIO from StringIO import StringIO
class RequestMixin(object): class RequestMixin(object):
"""Delegate class that supplements an HttpRequest object with additional behaviour.""" """Mixin behaviour to deal with requests."""
USE_FORM_OVERLOADING = True USE_FORM_OVERLOADING = True
METHOD_PARAM = "_method" METHOD_PARAM = "_method"

View File

@ -3,7 +3,6 @@ from django.views.decorators.csrf import csrf_exempt
from djangorestframework.compat import View from djangorestframework.compat import View
from djangorestframework.emitters import EmitterMixin from djangorestframework.emitters import EmitterMixin
from djangorestframework.parsers import ParserMixin
from djangorestframework.authenticators import AuthenticatorMixin from djangorestframework.authenticators import AuthenticatorMixin
from djangorestframework.validators import FormValidatorMixin from djangorestframework.validators import FormValidatorMixin
from djangorestframework.response import Response, ResponseException from djangorestframework.response import Response, ResponseException
@ -19,7 +18,7 @@ from djangorestframework import emitters, parsers, authenticators, status
__all__ = ['Resource'] __all__ = ['Resource']
class Resource(EmitterMixin, ParserMixin, AuthenticatorMixin, FormValidatorMixin, RequestMixin, View): class Resource(EmitterMixin, AuthenticatorMixin, FormValidatorMixin, RequestMixin, View):
"""Handles incoming requests and maps them to REST operations, """Handles incoming requests and maps them to REST operations,
performing authentication, input deserialization, input validation, output serialization.""" performing authentication, input deserialization, input validation, output serialization."""

View File

@ -1,4 +1,6 @@
# TODO: finish off the refactoring """
Tests for content parsing, and form-overloaded content parsing.
"""
from django.test import TestCase from django.test import TestCase
from djangorestframework.compat import RequestFactory from djangorestframework.compat import RequestFactory
from djangorestframework.request import RequestMixin from djangorestframework.request import RequestMixin
@ -9,27 +11,6 @@ class TestContentParsing(TestCase):
def setUp(self): def setUp(self):
self.req = RequestFactory() self.req = RequestFactory()
# # Interface tests
#
# def test_content_mixin_interface(self):
# """Ensure the ContentMixin interface is as expected."""
# self.assertRaises(NotImplementedError, ContentMixin().determine_content, None)
#
# def test_standard_content_mixin_interface(self):
# """Ensure the OverloadedContentMixin interface is as expected."""
# self.assertTrue(issubclass(StandardContentMixin, ContentMixin))
# getattr(StandardContentMixin, 'determine_content')
#
# def test_overloaded_content_mixin_interface(self):
# """Ensure the OverloadedContentMixin interface is as expected."""
# self.assertTrue(issubclass(OverloadedContentMixin, ContentMixin))
# getattr(OverloadedContentMixin, 'CONTENT_PARAM')
# getattr(OverloadedContentMixin, 'CONTENTTYPE_PARAM')
# getattr(OverloadedContentMixin, 'determine_content')
#
#
# # Common functionality to test with both StandardContentMixin and OverloadedContentMixin
#
def ensure_determines_no_content_GET(self, view): def ensure_determines_no_content_GET(self, view):
"""Ensure view.RAW_CONTENT returns None for GET request with no content.""" """Ensure view.RAW_CONTENT returns None for GET request with no content."""
view.request = self.req.get('/') view.request = self.req.get('/')
@ -85,28 +66,6 @@ class TestContentParsing(TestCase):
"""Ensure view.RAW_CONTENT returns content for PUT request with non-form content.""" """Ensure view.RAW_CONTENT returns content for PUT request with non-form content."""
self.ensure_determines_non_form_content_PUT(RequestMixin()) self.ensure_determines_non_form_content_PUT(RequestMixin())
# # OverloadedContentMixin behavioural tests
#
# def test_overloaded_behaviour_determines_no_content_GET(self):
# """Ensure StandardContentMixin.determine_content(request) returns None for GET request with no content."""
# self.ensure_determines_no_content_GET(OverloadedContentMixin())
#
# def test_overloaded_behaviour_determines_form_content_POST(self):
# """Ensure StandardContentMixin.determine_content(request) returns content for POST request with content."""
# self.ensure_determines_form_content_POST(OverloadedContentMixin())
#
# def test_overloaded_behaviour_determines_non_form_content_POST(self):
# """Ensure StandardContentMixin.determine_content(request) returns (content type, content) for POST request with content."""
# self.ensure_determines_non_form_content_POST(OverloadedContentMixin())
#
# def test_overloaded_behaviour_determines_form_content_PUT(self):
# """Ensure StandardContentMixin.determine_content(request) returns content for PUT request with content."""
# self.ensure_determines_form_content_PUT(OverloadedContentMixin())
#
# def test_overloaded_behaviour_determines_non_form_content_PUT(self):
# """Ensure StandardContentMixin.determine_content(request) returns (content type, content) for PUT request with content."""
# self.ensure_determines_non_form_content_PUT(OverloadedContentMixin())
#
def test_overloaded_behaviour_allows_content_tunnelling(self): def test_overloaded_behaviour_allows_content_tunnelling(self):
"""Ensure request.RAW_CONTENT returns content for overloaded POST request""" """Ensure request.RAW_CONTENT returns content for overloaded POST request"""
content = 'qwerty' content = 'qwerty'
@ -118,9 +77,3 @@ class TestContentParsing(TestCase):
view.parsers = (PlainTextParser,) view.parsers = (PlainTextParser,)
view.perform_form_overloading() view.perform_form_overloading()
self.assertEqual(view.RAW_CONTENT, content) self.assertEqual(view.RAW_CONTENT, content)
# def test_overloaded_behaviour_allows_content_tunnelling_content_type_not_set(self):
# """Ensure determine_content(request) returns (None, content) for overloaded POST request with content type not set"""
# content = 'qwerty'
# request = self.req.post('/', {OverloadedContentMixin.CONTENT_PARAM: content})
# self.assertEqual(OverloadedContentMixin().determine_content(request), (None, content))