From 1bec6f2d5ed3d27b39ef543e0e4afb23678cfe4b Mon Sep 17 00:00:00 2001
From: Michele Lazzeri
Date: Thu, 12 Jan 2012 18:04:18 +0100
Subject: add testcate XMLRendererTestCase.test_render_and_parse_complex_data
---
djangorestframework/tests/renderers.py | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
(limited to 'djangorestframework/tests')
diff --git a/djangorestframework/tests/renderers.py b/djangorestframework/tests/renderers.py
index e80f0f20..d000df27 100644
--- a/djangorestframework/tests/renderers.py
+++ b/djangorestframework/tests/renderers.py
@@ -6,7 +6,7 @@ from djangorestframework.views import View
from djangorestframework.compat import View as DjangoView
from djangorestframework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \
XMLRenderer, JSONPRenderer, DocumentingHTMLRenderer
-from djangorestframework.parsers import JSONParser, YAMLParser
+from djangorestframework.parsers import JSONParser, YAMLParser, XMLParser
from djangorestframework.mixins import ResponseMixin
from djangorestframework.response import Response
@@ -479,6 +479,33 @@ class XMLRendererTestCase(TestCase):
content = renderer.render({'field': None}, 'application/xml')
self.assertXMLContains(content, '')
+ def test_render_and_parse_complex_data(self):
+ """
+ Test XML rendering.
+ """
+ renderer = XMLRenderer(None)
+ complex_data_in = {
+ "creation_date": datetime.datetime(2011, 12, 25, 12, 45, 00),
+ "name": "name",
+ "sub_data_list": [
+ {
+ "sub_id": 1,
+ "sub_name": "first"
+ },
+ {
+ "sub_id": 2,
+ "sub_name": "second"
+ }
+ ]
+ }
+
+ content = StringIO(renderer.render(complex_data_in, 'application/xml'))
+
+ parser = XMLParser(None)
+ complex_data_out, dummy = parser.parse(content)
+ error_msg = "complex data differs!IN:\n %s \n\n OUT:\n %s" % (repr(complex_data_in), repr(complex_data_out))
+ self.assertDictEqual(complex_data_in, complex_data_out, error_msg)
+
def assertXMLContains(self, xml, string):
self.assertTrue(xml.startswith('\n'))
self.assertTrue(xml.endswith(''))
--
cgit v1.2.3
From 21776c0de2eca3d66534817b3f5a258a6fc1fc2f Mon Sep 17 00:00:00 2001
From: Michele Lazzeri
Date: Fri, 13 Jan 2012 10:11:34 +0100
Subject: split renderer and parser complex data test case
---
djangorestframework/tests/parsers.py | 41 ++++++++--
djangorestframework/tests/renderers.py | 137 +++++++--------------------------
2 files changed, 64 insertions(+), 114 deletions(-)
(limited to 'djangorestframework/tests')
diff --git a/djangorestframework/tests/parsers.py b/djangorestframework/tests/parsers.py
index e4e7e09a..5bd4aad3 100644
--- a/djangorestframework/tests/parsers.py
+++ b/djangorestframework/tests/parsers.py
@@ -156,10 +156,9 @@ class TestFormParser(TestCase):
self.assertEqual(Form(data).is_valid(), True)
-
class TestXMLParser(TestCase):
def setUp(self):
- self.input = StringIO(
+ self._input = StringIO(
''
''
'121.0'
@@ -168,15 +167,45 @@ class TestXMLParser(TestCase):
'2011-12-25 12:45:00'
''
)
- self.data = {
+ self._data = {
'field_a': 121,
'field_b': 'dasd',
'field_c': None,
'field_d': datetime.datetime(2011, 12, 25, 12, 45, 00)
}
-
+ self._complex_data_input = StringIO(
+ ''
+ ''
+ '2011-12-25 12:45:00'
+ ''
+ '1first'
+ '2second'
+ ''
+ 'name'
+ ''
+ )
+ self._complex_data = {
+ "creation_date": datetime.datetime(2011, 12, 25, 12, 45, 00),
+ "name": "name",
+ "sub_data_list": [
+ {
+ "sub_id": 1,
+ "sub_name": "first"
+ },
+ {
+ "sub_id": 2,
+ "sub_name": "second"
+ }
+ ]
+ }
+
def test_parse(self):
parser = XMLParser(None)
- (data, files) = parser.parse(self.input)
- self.assertEqual(data, self.data)
+ (data, files) = parser.parse(self._input)
+ self.assertEqual(data, self._data)
+
+ def test_complex_data_parse(self):
+ parser = XMLParser(None)
+ (data, files) = parser.parse(self._complex_data_input)
+ self.assertEqual(data, self._complex_data)
diff --git a/djangorestframework/tests/renderers.py b/djangorestframework/tests/renderers.py
index d000df27..142791e4 100644
--- a/djangorestframework/tests/renderers.py
+++ b/djangorestframework/tests/renderers.py
@@ -283,72 +283,6 @@ if YAMLRenderer:
self.assertEquals(obj, data)
-class XMLRendererTestCase(TestCase):
- """
- Tests specific to the XML Renderer
- """
-
- def test_render_string(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': 'astring'}, 'application/xml')
- self.assertXMLContains(content, 'astring')
-
- def test_render_integer(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': 111}, 'application/xml')
- self.assertXMLContains(content, '111')
-
- def test_render_datetime(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({
- 'field': datetime.datetime(2011, 12, 25, 12, 45, 00)
- }, 'application/xml')
- self.assertXMLContains(content, '2011-12-25 12:45:00')
-
- def test_render_float(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': 123.4}, 'application/xml')
- self.assertXMLContains(content, '123.4')
-
- def test_render_decimal(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': Decimal('111.2')}, 'application/xml')
- self.assertXMLContains(content, '111.2')
-
- def test_render_none(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': None}, 'application/xml')
- self.assertXMLContains(content, '')
-
- def assertXMLContains(self, xml, string):
- self.assertTrue(xml.startswith('\n'))
- self.assertTrue(xml.endswith(''))
- self.assertTrue(string in xml, '%r not in %r' % (string, xml))
-
-class HTMLView(View):
- renderers = (DocumentingHTMLRenderer)
-
- def get(self, request, **kwargs):
- return 'text'
-
urlpatterns += patterns('',
url(r'^/html$', HTMLView.as_view()),
)
@@ -429,6 +363,21 @@ class XMLRendererTestCase(TestCase):
Tests specific to the XML Renderer
"""
+ _complex_data = {
+ "creation_date": datetime.datetime(2011, 12, 25, 12, 45, 00),
+ "name": "name",
+ "sub_data_list": [
+ {
+ "sub_id": 1,
+ "sub_name": "first"
+ },
+ {
+ "sub_id": 2,
+ "sub_name": "second"
+ }
+ ]
+ }
+
def test_render_string(self):
"""
Test XML rendering.
@@ -478,57 +427,29 @@ class XMLRendererTestCase(TestCase):
renderer = XMLRenderer(None)
content = renderer.render({'field': None}, 'application/xml')
self.assertXMLContains(content, '')
+
+ def test_render_complex_data(self):
+ """
+ Test XML rendering.
+ """
+ renderer = XMLRenderer(None)
+ content = renderer.render(self._complex_data, 'application/xml')
+ self.assertXMLContains(content, 'first')
+ self.assertXMLContains(content, 'second')
def test_render_and_parse_complex_data(self):
"""
Test XML rendering.
"""
- renderer = XMLRenderer(None)
- complex_data_in = {
- "creation_date": datetime.datetime(2011, 12, 25, 12, 45, 00),
- "name": "name",
- "sub_data_list": [
- {
- "sub_id": 1,
- "sub_name": "first"
- },
- {
- "sub_id": 2,
- "sub_name": "second"
- }
- ]
- }
-
- content = StringIO(renderer.render(complex_data_in, 'application/xml'))
+ renderer = XMLRenderer(None)
+ content = StringIO(renderer.render(self._complex_data, 'application/xml'))
parser = XMLParser(None)
complex_data_out, dummy = parser.parse(content)
- error_msg = "complex data differs!IN:\n %s \n\n OUT:\n %s" % (repr(complex_data_in), repr(complex_data_out))
- self.assertDictEqual(complex_data_in, complex_data_out, error_msg)
+ error_msg = "complex data differs!IN:\n %s \n\n OUT:\n %s" % (repr(self._complex_data), repr(complex_data_out))
+ self.assertDictEqual(self._complex_data, complex_data_out, error_msg)
def assertXMLContains(self, xml, string):
self.assertTrue(xml.startswith('\n'))
self.assertTrue(xml.endswith(''))
- self.assertTrue(string in xml, '%r not in %r' % (string, xml))
-
-
-
-class Issue122Tests(TestCase):
- """
- Tests that covers #122.
- """
-
- urls = 'djangorestframework.tests.renderers'
-
- def test_only_html_renderer(self):
- """
- Test if no recursion occurs.
- """
- resp = self.client.get('/html')
-
- def test_html_renderer_is_first(self):
- """
- Test if no recursion occurs.
- """
- resp = self.client.get('/html1')
-
+ self.assertTrue(string in xml, '%r not in %r' % (string, xml))
\ No newline at end of file
--
cgit v1.2.3