Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/webapp/polls/tests/structure_tests.py
diff options
context:
space:
mode:
authorRogelio Mita <rogeliomita@activitycentral.com>2013-03-28 04:35:08 (GMT)
committer Rogelio Mita <rogeliomita@activitycentral.com>2013-03-29 13:02:39 (GMT)
commit5faf0cbf12f88ea3729fa0f7c82aacc9e35eaed8 (patch)
tree260fc928bc9d6fbd956113e822cf4e44de2d3fe3 /webapp/polls/tests/structure_tests.py
parent90ec60f52a57ecb2170f0dfa2206537cb539150e (diff)
Refactoring and cosmetic
Diffstat (limited to 'webapp/polls/tests/structure_tests.py')
-rw-r--r--webapp/polls/tests/structure_tests.py219
1 files changed, 219 insertions, 0 deletions
diff --git a/webapp/polls/tests/structure_tests.py b/webapp/polls/tests/structure_tests.py
new file mode 100644
index 0000000..0c3ef4d
--- /dev/null
+++ b/webapp/polls/tests/structure_tests.py
@@ -0,0 +1,219 @@
+# -*- encoding: utf-8 -*-
+from polls.models import Poll, Group, Field, Structure
+
+from utils.test import MongoTestCase
+
+
+class StructureTests(MongoTestCase):
+
+ def setUp(self):
+ poll = Poll(data={'name': 'name'})
+ poll_id = poll.save()
+
+ self.poll = Poll.get(id=poll_id)
+
+ self.data = {
+ 'poll_id': 'POLL_ID',
+ 'groups': {
+ '0': {
+ 'name': 'group_0',
+ 'fields': {
+ '0': {
+ 'widget_type': Field.TextInput,
+ 'name': 'field_0_0'
+ }
+ }
+ }
+ }
+ }
+
+ def test_structure(self):
+ data = {
+ 'groups': {
+ '0': {
+ 'name': 'group_0',
+ 'fields': {
+ '0': {
+ 'widget_type': Field.TextInput,
+ 'name': 'field_0_0'
+ },
+ '1': {
+ 'widget_type': Field.RadioButton,
+ 'name': 'field_0_1'
+ }
+ },
+ },
+ '1': {
+ 'name': 'group_1',
+ 'fields': {
+ '0': {
+ 'widget_type': Field.MultipleCheckBox,
+ 'name': 'field_1_0'
+ },
+ '1': {
+ 'widget_type': Field.DropDownList,
+ 'name': 'field_1_1'
+ }
+ },
+ }
+ }
+ }
+
+ structure = Structure(data=data, poll=self.poll)
+ self.assertEqual(self.poll, structure.poll)
+
+ group_0 = structure.groups[0]
+ self.assertEqual(self.poll, group_0.poll)
+ self.assertEqual(0, group_0.order)
+ self.assertEqual('group_0', group_0.name)
+ self.assertEqual(2, len(group_0.fields))
+
+ group_1 = structure.groups[1]
+ self.assertEqual(self.poll, group_1.poll)
+ self.assertEqual(1, group_1.order)
+ self.assertEqual('group_1', group_1.name)
+ self.assertEqual(2, len(group_1.fields))
+
+ field_0_0 = group_0.fields[0]
+ self.assertEqual(self.poll, field_0_0.poll)
+ self.assertEqual(0, field_0_0.order)
+ self.assertEqual('field_0_0', field_0_0.name)
+ self.assertEqual('TextInput', field_0_0.widget_type)
+
+ field_0_1 = group_0.fields[1]
+ self.assertEqual(self.poll, field_0_1.poll)
+ self.assertEqual(1, field_0_1.order)
+ self.assertEqual('field_0_1', field_0_1.name)
+ self.assertEqual('RadioButton', field_0_1.widget_type)
+
+ field_1_0 = group_1.fields[0]
+ self.assertEqual(self.poll, field_1_0.poll)
+ self.assertEqual(0, field_1_0.order)
+ self.assertEqual('field_1_0', field_1_0.name)
+ self.assertEqual('MultipleCheckBox', field_1_0.widget_type)
+
+ field_1_1 = group_1.fields[1]
+ self.assertEqual(self.poll, field_1_1.poll)
+ self.assertEqual(1, field_1_1.order)
+ self.assertEqual('field_1_1', field_1_1.name)
+ self.assertEqual('DropDownList', field_1_1.widget_type)
+
+ def test_is_valid(self):
+ data = {
+ 'groups': {
+ '0': {
+ 'name': 'group_0',
+ 'fields': {
+ '0': { # has no options for a widget_type that needs
+ 'widget_type': 'RadioButton',
+ 'name': 'field_0_0'
+ },
+ }
+ },
+ '1': {
+ 'name': '', # has no name
+ 'fields': {} # has no fields
+ }
+ }
+ }
+
+ structure = Structure(data=data, poll=self.poll)
+
+ self.assertFalse(structure.is_valid())
+
+ field_0_0 = structure.groups[0].fields[0]
+
+ self.assertEqual(1, len(field_0_0.errors))
+
+ group_1 = structure.groups[1]
+
+ self.assertEqual(2, len(group_1.errors))
+
+ def test_invalid_structure(self):
+ data = {}
+
+ structure = Structure(data=data, poll=self.poll)
+
+ self.assertFalse(structure.is_valid())
+
+ self.assertEqual(1, len(structure.errors))
+
+ def test_save(self):
+
+ structure = Structure(data=self.data)
+
+ self.assertRaises(structure.ValidationError, structure.save)
+
+ structure = Structure(data=self.data, poll=self.poll)
+ structure.save()
+
+ self.assertEqual(1, self.db.structures.count())
+
+ def test_get(self):
+ structure = Structure(data=self.data, poll=self.poll)
+ structure_id = structure.save()
+
+ structure = Structure.get(id=structure_id)
+
+ self.assertEqual(self.poll.id, structure.poll.id)
+
+ def test_to_python(self):
+
+ expected = {
+ 'groups': {
+ '0': {
+ 'name': "group name",
+ 'fields': {
+ '0': {
+ 'name': "field_0_0",
+ 'widget_type': Field.TextInput,
+ 'options': {
+ '131212': {
+ 'text': "text"
+ }
+ }
+ }
+ }
+ },
+ '1': {
+ 'name': "group name",
+ 'fields': {
+ '0': {
+ 'name': "field_1_0",
+ 'widget_type': Field.TextInput,
+ 'options': {
+ '131212': {
+ 'text': "text"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ structure = Structure(poll=self.poll)
+
+ field = Field({
+ 'name': "field_0_0",
+ 'widget_type': Field.TextInput,
+ 'order': 0
+ })
+ field.add_options({'131212': {'text': "text"}})
+
+ group = Group({'name': "group name", 'order': 0})
+ group.add_field(field, field.order)
+ structure.add_group(group, group.order)
+
+ field = Field({
+ 'name': "field_1_0",
+ 'widget_type': Field.TextInput,
+ 'order': 0
+ })
+ field.add_options({'131212': {'text': "text"}})
+
+ group = Group({'name': "group name", 'order': 1})
+ group.add_field(field, field.order)
+ structure.add_group(group, group.order)
+
+ self.assertEqual(expected, structure.to_python())