Skip to content

Commit

Permalink
Add tests for html-form-rendering choice fields
Browse files Browse the repository at this point in the history
  • Loading branch information
arkadini committed May 15, 2016
1 parent 788603e commit f742452
Showing 1 changed file with 87 additions and 0 deletions.
87 changes: 87 additions & 0 deletions tests/test_renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,3 +485,90 @@ def test_render_with_provided_args(self):
result = renderer.render(self.serializer.data, None, {})

self.assertIsInstance(result, SafeText)


class TestChoiceFieldHTMLFormRenderer(TestCase):
"""
Test rendering ChoiceField with HTMLFormRenderer.
"""

def setUp(self):
choices = ((1, 'Option1'), (2, 'Option2'), (12, 'Option12'))

class TestSerializer(serializers.Serializer):
test_field = serializers.ChoiceField(choices=choices,
initial=2)

self.TestSerializer = TestSerializer
self.renderer = HTMLFormRenderer()

def test_render_initial_option(self):
serializer = self.TestSerializer()
result = self.renderer.render(serializer.data)

self.assertIsInstance(result, SafeText)

self.assertInHTML('<option value="2" selected>Option2</option>',
result)
self.assertInHTML('<option value="1">Option1</option>', result)
self.assertInHTML('<option value="12">Option12</option>', result)

def test_render_selected_option(self):
serializer = self.TestSerializer(data={'test_field': '12'})

serializer.is_valid()
result = self.renderer.render(serializer.data)

self.assertIsInstance(result, SafeText)

self.assertInHTML('<option value="12" selected>Option12</option>',
result)
self.assertInHTML('<option value="1">Option1</option>', result)
self.assertInHTML('<option value="2">Option2</option>', result)


class TestMultipleChoiceFieldHTMLFormRenderer(TestCase):
"""
Test rendering MultipleChoiceField with HTMLFormRenderer.
"""

def setUp(self):
self.renderer = HTMLFormRenderer()

def test_render_selected_option_with_string_option_ids(self):
choices = (('1', 'Option1'), ('2', 'Option2'), ('12', 'Option12'),
('}', 'OptionBrace'))

class TestSerializer(serializers.Serializer):
test_field = serializers.MultipleChoiceField(choices=choices)

serializer = TestSerializer(data={'test_field': ['12']})
serializer.is_valid()

result = self.renderer.render(serializer.data)

self.assertIsInstance(result, SafeText)

self.assertInHTML('<option value="12" selected>Option12</option>',
result)
self.assertInHTML('<option value="1">Option1</option>', result)
self.assertInHTML('<option value="2">Option2</option>', result)
self.assertInHTML('<option value="}">OptionBrace</option>', result)

def test_render_selected_option_with_integer_option_ids(self):
choices = ((1, 'Option1'), (2, 'Option2'), (12, 'Option12'))

class TestSerializer(serializers.Serializer):
test_field = serializers.MultipleChoiceField(choices=choices)

serializer = TestSerializer(data={'test_field': ['12']})
serializer.is_valid()

result = self.renderer.render(serializer.data)

self.assertIsInstance(result, SafeText)

self.assertInHTML('<option value="12" selected>Option12</option>',
result)
self.assertInHTML('<option value="1">Option1</option>', result)
self.assertInHTML('<option value="2">Option2</option>', result)

0 comments on commit f742452

Please sign in to comment.