diff options
author | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-03-28 04:35:08 (GMT) |
---|---|---|
committer | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-03-29 13:02:39 (GMT) |
commit | 5faf0cbf12f88ea3729fa0f7c82aacc9e35eaed8 (patch) | |
tree | 260fc928bc9d6fbd956113e822cf4e44de2d3fe3 /webapp/polls/tests/structure_tests.py | |
parent | 90ec60f52a57ecb2170f0dfa2206537cb539150e (diff) |
Refactoring and cosmetic
Diffstat (limited to 'webapp/polls/tests/structure_tests.py')
-rw-r--r-- | webapp/polls/tests/structure_tests.py | 219 |
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()) |