diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-11-15 16:29:30 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:23:19 +0100 |
commit | cda77c979e232386ef24ea7a04600f16f3c32c98 (patch) | |
tree | 7d53e762723338913594ccdb42c6fa08c4bfb5ef /archaeological_files/tests.py | |
parent | 4746cd2938df3cf87ae338d22eb4f67f35bac960 (diff) | |
download | Ishtar-cda77c979e232386ef24ea7a04600f16f3c32c98.tar.bz2 Ishtar-cda77c979e232386ef24ea7a04600f16f3c32c98.zip |
File module refactoring - more tests for files
Diffstat (limited to 'archaeological_files/tests.py')
-rw-r--r-- | archaeological_files/tests.py | 386 |
1 files changed, 384 insertions, 2 deletions
diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py index 7145cb836..f0684c756 100644 --- a/archaeological_files/tests.py +++ b/archaeological_files/tests.py @@ -30,10 +30,13 @@ from ishtar_common.tests import ( create_superuser, AutocompleteTestBase, AcItem, + WizardTest, + WizardTestFormData as FormData, FILE_TOWNS_FIXTURES, ) -from ishtar_common.models import Town, IshtarSiteProfile +from ishtar_common.models import Town, IshtarSiteProfile, Person, PersonType, \ + Organization, OrganizationType from ishtar_common.utils import ugettext_lazy as _ from archaeological_files import models, views @@ -45,7 +48,7 @@ from archaeological_operations.models import ( ) from archaeological_operations.tests import OperationInitTest, FileInit - +""" def create_administrativact(user, fle): act_type, created = ActType.objects.get_or_create( txt_idx="act_type_F", intented_to="F" @@ -59,6 +62,7 @@ def create_administrativact(user, fle): } adminact, created = AdministrativeAct.objects.get_or_create(**dct) return [act_type], [adminact] +""" class FileTest(TestCase, FileInit): @@ -754,3 +758,381 @@ class AutocompleteTest(AutocompleteTestBase, TestCase): name=base_name, file_type=models.FileType.objects.all()[0] ) return item, None + + +class FileWizardCreationTest(WizardTest, OperationInitTest, TestCase): + fixtures = FILE_TOWNS_FIXTURES + url_name = "file_creation" + wizard_name = "file_wizard" + steps = views.file_creation_steps + redirect_url = ( + "/file_modification/selec-file_modification?open_item={last_id}" + ) + model = models.File + + form_datas = [ + FormData( + "Create a research file", + form_datas={ + "general": { + "file_type": None, + "year": None, + "creation_date": None, + "reception_date": None + }, + "researchaddress": {}, + "research": { + "requested_operation_type": None, + "scientist": None, + }, + "instruction": { + "in_charge": None + } + }, + ignored=( + "preventivetype-file_creation", + "preventiveplanning-file_creation", + "generalcontractor-file_creation", + "planningservice-file_creation", + ), + ), + FormData( + "Create a preventive file", + form_datas={ + "general": { + "file_type": None, + "year": None, + "creation_date": None, + "reception_date": None + }, + "preventivetype-file_creation": { + "saisine_type": None, + }, + "preventiveplanning-file_creation": {}, + "generalcontractor-file_creation": { + "corporation_general_contractor": None + }, + "instruction": { + "in_charge": None + } + }, + ignored=( + "planningservice-file_creation", + "researchaddress-file_creation", + "research-file_creation", + ), + ), + ] + + def pre_wizard(self): + profile, created = IshtarSiteProfile.objects.get_or_create( + slug="default", active=True + ) + profile.files = True + profile.save() + + if "general" not in self.form_datas[0].form_datas: + super().pre_wizard() + return + + file_type_pk = models.FileType.objects.get(txt_idx="prog").pk + # force cache reinit because previous mess up that - do not know why + models.FileType.is_preventive(file_type_pk, force=True) + self.form_datas[0].set( + "general", + "file_type", + file_type_pk + ) + file_type_pk = models.FileType.objects.get(txt_idx="preventive").pk + models.FileType.is_preventive(file_type_pk, force=True) + self.form_datas[1].set( + "general", + "file_type", + file_type_pk + ) + + responsability = Person.objects.create(name="OK", surname="SuperComputer") + responsability.person_types.add(PersonType.objects.get(txt_idx="sra_agent")) + for idx in range(2): + self.form_datas[idx].set("general", "year", 2022) + self.form_datas[idx].set("general", "creation_date", "2022-10-01") + self.form_datas[idx].set("general", "reception_date", "2022-10-03") + self.form_datas[idx].set("instruction", "in_charge", responsability.pk) + + ope_type = models.OperationType.objects.get(txt_idx="documents_study_research") + self.form_datas[0].set("research", "requested_operation_type", ope_type.pk) + person = Person.objects.create(name="OK", surname="Computer") + person.person_types.add(PersonType.objects.get(txt_idx="head_scientist")) + self.form_datas[0].set("research", "scientist", person.pk) + + self.form_datas[1].set( + "preventivetype", "saisine_type", + models.SaisineType.objects.filter(delay__gt=0).all()[0].pk + ) + self.form_datas[1].set( + "preventivetype", "permit_type", + models.PermitType.objects.all()[0].pk + ) + orga = Organization.objects.create( + name="Big corpo", + organization_type=OrganizationType.objects.get(txt_idx="general_contractor") + ) + self.form_datas[1].set( + "generalcontractor", "corporation_general_contractor", orga.pk + ) + + self.file_number = models.File.objects.count() + super().pre_wizard() + + def post_wizard(self): + self.assertEqual(models.File.objects.count(), self.file_number + 2) + + +class FileWizardModifTest(WizardTest, OperationInitTest, TestCase): + fixtures = FILE_TOWNS_FIXTURES + url_name = "file_modification" + wizard_name = url_name + "_wizard" + steps = views.file_modification_steps + redirect_url = ( + "/file_modification/selec-file_modification?open_item={current_id}" + ) + model = models.File + + form_datas = [ + FormData( + "Modify a research file", + form_datas={ + "selec": {}, + "general": { + "year": 2019, + }, + "generalcontractor": { + "corporation_general_contractor": None + }, + "instruction": { + "in_charge": None + } + }, + ignored=( + "preventivetype-file_modification", + "preventiveplanning-file_modification", + "researchaddress-file_modification", + "planningservice-file_modification", + "research-file_modification", + ), + ), + FormData( + "Modify a preventive file", + form_datas={ + "selec": {}, + "general": { + "file_type": None, + "year": 2012, + "creation_date": None, + "reception_date": None + }, + "preventivetype": { + "saisine_type": None, + }, + "preventiveplanning": {}, + "planningservice":{ + "permit_reference": "XKCD" + }, + "generalcontractor": { + "corporation_general_contractor": None + }, + "instruction": { + "in_charge": None + } + }, + ignored=( + "researchaddress-file_modification", + "research-file_modification", + ), + ), + ] + + def pre_wizard(self): + profile, created = IshtarSiteProfile.objects.get_or_create( + slug="default", active=True + ) + profile.files = True + profile.save() + + if "general" not in self.form_datas[0].form_datas: + super().pre_wizard() + return + + responsability = Person.objects.create(name="OK", surname="SuperComputer") + responsability.person_types.add(PersonType.objects.get(txt_idx="sra_agent")) + ope_type = models.OperationType.objects.get(txt_idx="documents_study_research") + person = Person.objects.create(name="OK", surname="Computer") + person.person_types.add(PersonType.objects.get(txt_idx="head_scientist")) + orga = Organization.objects.create( + name="Big corpo", + organization_type=OrganizationType.objects.get(txt_idx="general_contractor") + ) + + file_type_pk = models.FileType.objects.get(txt_idx="prog").pk + # force cache reinit because previous mess up that - do not know why + models.FileType.is_preventive(file_type_pk, force=True) + fle = models.File.objects.create( + file_type_id=file_type_pk, + year=2022, + creation_date="2022-10-01", + reception_date="2022-10-03", + in_charge=responsability, + requested_operation_type=ope_type, + scientist=person, + corporation_general_contractor=orga, + ) + file_type_pk = models.FileType.objects.get(txt_idx="preventive").pk + # force cache reinit because previous mess up that - do not know why + models.FileType.is_preventive(file_type_pk, force=True) + fle2 = models.File.objects.create( + file_type_id=file_type_pk, + year=2021, + creation_date="2022-09-01", + reception_date="2022-10-03", + in_charge=responsability, + corporation_general_contractor=orga, + saisine_type=models.SaisineType.objects.filter(delay__gt=0).all()[0] + ) + self.files = [fle, fle2] + + data = self.form_datas[0].form_datas + data["selec"]["pk"] = str(fle.pk) + data["general"]["file_type"] = fle.file_type.pk + data["general"]["creation_date"] = fle.creation_date + data["general"]["reception_date"] = fle.reception_date + data["generalcontractor"]["corporation_general_contractor"] = \ + fle.corporation_general_contractor.pk + data["instruction"]["in_charge"] = fle.in_charge.pk + data["instruction"]["numeric_reference"] = fle.numeric_reference + + data2 = self.form_datas[1].form_datas + data2["selec"]["pk"] = str(fle2.pk) + data2["general"]["file_type"] = fle2.file_type.pk + data2["general"]["creation_date"] = fle2.creation_date + data2["general"]["reception_date"] = fle2.reception_date + data2["preventivetype"]["saisine_type"] = fle2.saisine_type.pk + data2["generalcontractor"]["corporation_general_contractor"] = \ + fle2.corporation_general_contractor.pk + data2["instruction"]["in_charge"] = fle2.in_charge.pk + data2["instruction"]["numeric_reference"] = fle2.numeric_reference + self.file_number = models.File.objects.count() + + def post_first_wizard(test_object, final_step_response): + fle = models.File.objects.get(pk=test_object.files[0].pk) + test_object.assertEqual(fle.year, 2019) + + def post_second_wizard(test_object, final_step_response): + fle = models.File.objects.get(pk=test_object.files[1].pk) + test_object.assertEqual(fle.year, 2012) + + self.form_datas[0].extra_tests = [post_first_wizard] + self.form_datas[1].extra_tests = [post_second_wizard] + super().pre_wizard() + + def post_wizard(self): + self.assertEqual(models.File.objects.count(), self.file_number) + + +class FileWizardDeleteTest(FileWizardCreationTest): + fixtures = FILE_TOWNS_FIXTURES + url_name = "file_deletion" + wizard_name = url_name + "_wizard" + steps = views.file_deletion_steps + redirect_url = "/{}/selec-{}".format(url_name, url_name) + form_datas = [ + FormData( + "Wizard deletion test", + form_datas={ + "selec": {"pks": None}, + }, + ) + ] + + def pass_test(self): + if not settings.TEST_VIEWS: + # with no migration the views are not created + return True + + def pre_wizard(self): + self.file = models.File.objects.create( + file_type=models.FileType.objects.get(txt_idx="prog"), + year=2022, + ) + self.form_datas[0].form_datas["selec"]["pks"] = self.file.pk + self.file_number = models.File.objects.count() + super().pre_wizard() + + def post_wizard(self): + self.assertEqual(self.file_number - 1, models.File.objects.count()) + + +class FileWizardClosingTest(FileWizardCreationTest): + fixtures = FILE_TOWNS_FIXTURES + url_name = "file_closing" + wizard_name = url_name + "_wizard" + steps = views.file_closing_steps + redirect_url = "/file_closing/done" + form_datas = [ + FormData( + "Wizard closing test", + form_datas={ + "selec": {"pk": None}, + "date": {"end_date": "2016-01-01"}, + }, + ) + ] + + def pre_wizard(self): + self.file = models.File.objects.create( + file_type=models.FileType.objects.get(txt_idx="prog"), + year=2022, + ) + self.form_datas[0].form_datas["selec"]["pk"] = self.file.pk + self.assertTrue(self.file.is_active()) + super().pre_wizard() + + def post_wizard(self): + fle = models.File.objects.get(pk=self.file.pk) + self.assertFalse(fle.is_active()) + self.assertEqual( + fle.closing()["date"].strftime("%Y-%d-%m"), + self.form_datas[0].form_datas["date-" + self.url_name]["end_date"] + ) + + +class FileAdminActWizardCreationTest(WizardTest, OperationInitTest, TestCase): + fixtures = FILE_TOWNS_FIXTURES + url_name = "file_administrativeactfile" + wizard_name = "file_administrative_act_wizard" + steps = views.administrativeact_steps + form_datas = [ + FormData( + "Admin act creation", + form_datas={ + "selec": {}, + "administrativeact": { + "signature_date": str(datetime.date.today()) + }, + }, + ) + ] + + def pre_wizard(self): + self.file = models.File.objects.create( + file_type=models.FileType.objects.get(txt_idx="prog"), + year=2022, + ) + data = self.form_datas[0].form_datas + data["selec"]["pk"] = self.file.pk + act = ActType.objects.filter(intented_to="F").all()[0].pk + data["administrativeact"]["act_type"] = act + self.number = AdministrativeAct.objects.count() + super().pre_wizard() + + def post_wizard(self): + self.assertEqual(AdministrativeAct.objects.count(), self.number + 1) |