summaryrefslogtreecommitdiff
path: root/archaeological_files/tests.py
diff options
context:
space:
mode:
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
commitcda77c979e232386ef24ea7a04600f16f3c32c98 (patch)
tree7d53e762723338913594ccdb42c6fa08c4bfb5ef /archaeological_files/tests.py
parent4746cd2938df3cf87ae338d22eb4f67f35bac960 (diff)
downloadIshtar-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.py386
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)