summaryrefslogtreecommitdiff
path: root/ishtar_common/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-11-20 15:17:42 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-11-20 15:17:42 +0100
commit9309d89a48cee876ef17213924b2cc0b026677f9 (patch)
tree59e72e3bc35787dd2e822cbfd6896e4f8da30cd3 /ishtar_common/tests.py
parenta9d9b977778068d2609342d2749123618108e9d7 (diff)
downloadIshtar-9309d89a48cee876ef17213924b2cc0b026677f9.tar.bz2
Ishtar-9309d89a48cee876ef17213924b2cc0b026677f9.zip
Custom forms: filter by user and by groups - tests
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r--ishtar_common/tests.py70
1 files changed, 41 insertions, 29 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 63d80d5ab..016596772 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -288,6 +288,38 @@ class WizardTest(object):
raise ValidationError(u"Errors: {} on {}.".format(
u" ".join(errors), current_step))
+ @classmethod
+ def wizard_post(cls, client, url, current_step, form_data=None,
+ follow=True):
+ if not url:
+ url = reverse(cls.url_name)
+ data = {
+ '{}{}-current_step'.format(cls.url_name,
+ cls.wizard_name): [current_step],
+ }
+ if not form_data:
+ form_data = []
+
+ # reconstruct a POST request
+ if type(form_data) in (list, tuple): # is a formset
+ for d_idx, item in enumerate(form_data):
+ for k in item:
+ data['{}-{}-{}'.format(
+ current_step, d_idx, k)] = item[k]
+ else:
+ for k in form_data:
+ data['{}-{}'.format(current_step, k)] = form_data[k]
+
+ try:
+ response = client.post(url, data, follow=follow)
+ except ValidationError as e:
+ msg = u"Errors: {} on {}. On \"ManagementForm data is " \
+ u"missing or...\" error verify the wizard_name or " \
+ u"step name".format(u" - ".join(e.messages),
+ current_step)
+ raise ValidationError(msg)
+ return response
+
def test_wizard(self):
if self.pass_test():
return
@@ -301,35 +333,14 @@ class WizardTest(object):
current_step, current_form = step
if current_step in ignored:
continue
- data = {
- '{}{}-current_step'.format(self.url_name,
- self.wizard_name):
- [current_step],
- }
-
- # reconstruct a POST request
- if current_step in form_data:
- d = form_data[current_step]
- if type(d) in (list, tuple): # is a formset
- for d_idx, item in enumerate(d):
- for k in item:
- data['{}-{}-{}'.format(
- current_step, d_idx, k)] = item[k]
- else:
- for k in d:
- data['{}-{}'.format(current_step, k)] = d[k]
-
next_form_is_checked = len(self.steps) > idx + 1 and \
- self.steps[idx + 1][0] not in ignored
- try:
- response = self.client.post(
- url, data, follow=not next_form_is_checked)
- except ValidationError as e:
- msg = u"Errors: {} on {}. On \"ManagementForm data is " \
- u"missing or...\" error verify the wizard_name or " \
- u"step name".format(u" - ".join(e.messages),
- current_step)
- raise ValidationError(msg)
+ self.steps[idx + 1][0] not in ignored
+ data = []
+ if current_step in form_data:
+ data = form_data[current_step]
+ response = self.wizard_post(
+ self.client, url, current_step, data,
+ not next_form_is_checked)
self.check_response(response, current_step)
if next_form_is_checked:
next_form = self.steps[idx + 1][0]
@@ -402,7 +413,8 @@ class AdminGenTypeTest(TestCase):
gen_models = [
models.OrganizationType, models.PersonType, models.TitleType,
models.AuthorType, models.SourceType, models.OperationType,
- models.SpatialReferenceSystem, models.Format, models.SupportType]
+ models.SpatialReferenceSystem, models.Format, models.SupportType,
+ ]
models_with_data = gen_models + [models.ImporterModel]
models = models_with_data
module_name = 'ishtar_common'