aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/tests
diff options
context:
space:
mode:
authorMichele Lazzeri2012-01-13 10:11:34 +0100
committerMichele Lazzeri2012-01-13 10:11:34 +0100
commit21776c0de2eca3d66534817b3f5a258a6fc1fc2f (patch)
tree99e3ef2b2bd00ac6b5fbf0579f2989f868cdc6cf /djangorestframework/tests
parent1bec6f2d5ed3d27b39ef543e0e4afb23678cfe4b (diff)
downloaddjango-rest-framework-21776c0de2eca3d66534817b3f5a258a6fc1fc2f.tar.bz2
split renderer and parser complex data test case
Diffstat (limited to 'djangorestframework/tests')
-rw-r--r--djangorestframework/tests/parsers.py41
-rw-r--r--djangorestframework/tests/renderers.py137
2 files changed, 64 insertions, 114 deletions
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(
'<?xml version="1.0" encoding="utf-8"?>'
'<root>'
'<field_a>121.0</field_a>'
@@ -168,15 +167,45 @@ class TestXMLParser(TestCase):
'<field_d>2011-12-25 12:45:00</field_d>'
'</root>'
)
- 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(
+ '<?xml version="1.0" encoding="utf-8"?>'
+ '<root>'
+ '<creation_date>2011-12-25 12:45:00</creation_date>'
+ '<sub_data_list>'
+ '<list-item><sub_id>1</sub_id><sub_name>first</sub_name></list-item>'
+ '<list-item><sub_id>2</sub_id><sub_name>second</sub_name></list-item>'
+ '</sub_data_list>'
+ '<name>name</name>'
+ '</root>'
+ )
+ 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, '<field>astring</field>')
-
- def test_render_integer(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': 111}, 'application/xml')
- self.assertXMLContains(content, '<field>111</field>')
-
- 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, '<field>2011-12-25 12:45:00</field>')
-
- def test_render_float(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': 123.4}, 'application/xml')
- self.assertXMLContains(content, '<field>123.4</field>')
-
- def test_render_decimal(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': Decimal('111.2')}, 'application/xml')
- self.assertXMLContains(content, '<field>111.2</field>')
-
- def test_render_none(self):
- """
- Test XML rendering.
- """
- renderer = XMLRenderer(None)
- content = renderer.render({'field': None}, 'application/xml')
- self.assertXMLContains(content, '<field></field>')
-
- def assertXMLContains(self, xml, string):
- self.assertTrue(xml.startswith('<?xml version="1.0" encoding="utf-8"?>\n<root>'))
- self.assertTrue(xml.endswith('</root>'))
- 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, '<field></field>')
+
+ def test_render_complex_data(self):
+ """
+ Test XML rendering.
+ """
+ renderer = XMLRenderer(None)
+ content = renderer.render(self._complex_data, 'application/xml')
+ self.assertXMLContains(content, '<sub_name>first</sub_name>')
+ self.assertXMLContains(content, '<sub_name>second</sub_name>')
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('<?xml version="1.0" encoding="utf-8"?>\n<root>'))
self.assertTrue(xml.endswith('</root>'))
- 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