summaryrefslogtreecommitdiff
path: root/archaeological_operations/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-24 17:15:39 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-24 17:15:39 +0100
commit0a280ab1b2a3623780b74528d67debddd891fc6c (patch)
tree656c573a9fe6bcba550d0d87d1290779b8fb93f8 /archaeological_operations/tests.py
parentd3145603feb093f4b6f7c3b0a64cfff547a683fa (diff)
downloadIshtar-0a280ab1b2a3623780b74528d67debddd891fc6c.tar.bz2
Ishtar-0a280ab1b2a3623780b74528d67debddd891fc6c.zip
Wizard tests improvements. Test inappropriate parcel deletion.
Diffstat (limited to 'archaeological_operations/tests.py')
-rw-r--r--archaeological_operations/tests.py165
1 files changed, 163 insertions, 2 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index 9cdeb67e6..a9fdf38cc 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -619,7 +619,11 @@ class OperationInitTest(object):
def get_default_parcel(self, force=False):
if force:
return self.create_parcel()[-1]
- return self.create_parcel()[0]
+ parcel = self.create_parcel()[0]
+ if models.Parcel.objects.filter(pk=parcel.pk).count():
+ return parcel
+ self.parcels.pop(0)
+ return self.create_operation()[-1]
def create_operation(self, user=None, orga=None):
if not orga:
@@ -634,7 +638,12 @@ class OperationInitTest(object):
def get_default_operation(self, force=False):
if force:
return self.create_operation()[-1]
- return self.create_operation()[0]
+ ope = self.create_operation()[0]
+ if models.Operation.objects.filter(pk=ope.pk).count():
+ return ope
+ self.operations.pop(0)
+ return self.create_operation()[-1]
+
def tearDown(self):
# cleanup for further test
@@ -976,6 +985,158 @@ class OperationWizardCreationTest(WizardTest, OperationInitTest, TestCase):
self.parcel_number + 2)
+class OperationWizardModifTest(WizardTest, OperationInitTest, TestCase):
+ fixtures = OperationWizardCreationTest.fixtures
+ url_name = 'operation_modification'
+ wizard_name = url_name + '_wizard'
+ steps = views.operation_modif_wizard_steps
+ base_ignored_steps = (
+ 'archaeologicalsite-operation_modification',
+ 'preventive-operation_modification',
+ 'preventivediag-operation_modification',
+ 'towns-operation_modification',
+ 'parcels-operation_modification',
+ 'remains-operation_modification',
+ 'periods-operation_modification',
+ 'relations-operation_modification',
+ 'abstract-operation_modification',)
+ form_datas = [
+ FormData(
+ "Update an operation",
+ form_datas={
+ 'selec-operation_modification': {},
+ 'general-operation_modification': {
+ 'operation_type': 2,
+ 'year': 2017},
+ 'townsgeneral-operation_modification': [],
+ 'parcelsgeneral-operation_modification': [],
+ },
+ ignored=base_ignored_steps
+ ),
+ FormData(
+ "Operation: try to remove a parcel with attached context record",
+ form_datas={
+ 'selec-operation_modification': {},
+ 'general-operation_modification': {
+ 'operation_type': 2,
+ 'year': 2017},
+ 'townsgeneral-operation_modification': [],
+ 'parcelsgeneral-operation_modification': [],
+ },
+ ignored=base_ignored_steps
+ ),
+ FormData(
+ "Operation: remove a parcel with no attached context record",
+ form_datas={
+ 'selec-operation_modification': {},
+ 'general-operation_modification': {
+ 'operation_type': 2,
+ 'year': 2017},
+ 'townsgeneral-operation_modification': [],
+ 'parcelsgeneral-operation_modification': [],
+ },
+ ignored=base_ignored_steps
+ ),
+ ]
+
+ def pre_wizard(self):
+ self.create_operation()
+ operation = self.operations[0]
+ init_town = self.create_towns()[0]
+ operation.towns.add(init_town)
+ init_parcel = self.create_parcel()[0]
+ operation.parcels.add(init_parcel)
+
+ from archaeological_context_records.models import ContextRecord
+ cr_data = {'label': "Context record", "operation": operation,
+ 'parcel': init_parcel,
+ 'history_modifier': self.get_default_user()}
+ self.cr = ContextRecord.objects.create(**cr_data)
+
+ data = self.form_datas[0].form_datas
+ data2 = self.form_datas[1].form_datas
+ data3 = self.form_datas[2].form_datas
+
+ data['selec-operation_modification']['pk'] = operation.pk
+ data2['selec-operation_modification']['pk'] = operation.pk
+ data3['selec-operation_modification']['pk'] = operation.pk
+
+ town = self.create_towns(
+ datas={'numero_insee': '67890', 'name': 'Twin Peaks'})[-1]
+ towns = [{'town': town.pk}, {'town': init_town.pk}]
+ data['townsgeneral-operation_modification'] = towns
+ data2['townsgeneral-operation_modification'] = towns
+ data3['townsgeneral-operation_modification'] = towns
+
+ parcel_data = {
+ 'town': town.pk, 'year': 2017, 'section': 'S',
+ 'parcel_number': '42'}
+ data['parcelsgeneral-operation_modification'].append(parcel_data)
+ data2['parcelsgeneral-operation_modification'].append(parcel_data)
+ data3['parcelsgeneral-operation_modification'].append(parcel_data)
+
+ parcel_data_2 = {
+ 'town': init_parcel.town.pk, 'year': init_parcel.year or '',
+ 'section': init_parcel.section,
+ 'parcel_number': init_parcel.parcel_number}
+ data['parcelsgeneral-operation_modification'].append(parcel_data_2)
+ # no init parcel for data2 and data3
+
+ self.operation_number = models.Operation.objects.count()
+ self.parcel_number = models.Parcel.objects.count()
+
+ def post_first_wizard(test_object, final_step_response):
+ test_object.assertEqual(models.Operation.objects.count(),
+ test_object.operation_number)
+ operation = models.Operation.objects.get(
+ pk=test_object.operations[0].pk)
+ test_object.assertEqual(operation.operation_type.pk, 2)
+ test_object.assertEqual(operation.year, 2017)
+ test_object.assertEqual(models.Parcel.objects.count(),
+ test_object.parcel_number + 1)
+ test_object.assertEqual(operation.parcels.count(),
+ test_object.parcel_number + 1)
+
+ def post_second_wizard(test_object, final_step_response):
+ test_object.assertEqual(models.Operation.objects.count(),
+ test_object.operation_number)
+ operation = models.Operation.objects.get(
+ pk=test_object.operations[0].pk)
+ test_object.assertEqual(operation.operation_type.pk, 2)
+ test_object.assertEqual(operation.year, 2017)
+ test_object.assertEqual(models.Parcel.objects.count(),
+ test_object.parcel_number + 1)
+ # the init parcel is not submited but have a context record
+ # the init parcel is not detached from the operation
+ test_object.assertEqual(operation.parcels.count(),
+ test_object.parcel_number + 1)
+
+ def pre_third_wizard(test_object):
+ parcel_nb = models.Parcel.objects.count()
+ test_object.cr.delete()
+ test_object.assertEqual(
+ parcel_nb, models.Parcel.objects.count())
+
+ def post_third_wizard(test_object, final_step_response):
+ test_object.assertEqual(models.Operation.objects.count(),
+ test_object.operation_number)
+ operation = models.Operation.objects.get(
+ pk=test_object.operations[0].pk)
+ test_object.assertEqual(operation.operation_type.pk, 2)
+ test_object.assertEqual(operation.year, 2017)
+ # with no attach the parcel is deleted
+ test_object.assertEqual(operation.parcels.count(),
+ test_object.parcel_number)
+ test_object.assertEqual(models.Parcel.objects.count(),
+ test_object.parcel_number)
+
+ self.form_datas[0].extra_tests = [post_first_wizard]
+ self.form_datas[1].extra_tests = [post_second_wizard]
+ self.form_datas[2].pre_tests = [pre_third_wizard]
+ self.form_datas[2].extra_tests = [post_third_wizard]
+ super(OperationWizardModifTest, self).pre_wizard()
+
+
class OperationWizardDeleteTest(OperationWizardCreationTest):
fixtures = OperationWizardCreationTest.fixtures
url_name = 'operation_deletion'