diff options
-rw-r--r-- | archaeological_finds/tests.py | 63 | ||||
-rw-r--r-- | archaeological_finds/tests/importer-group-media.zip | bin | 0 -> 888 bytes | |||
-rw-r--r-- | archaeological_finds/tests/importer-group.csv | 2 | ||||
-rw-r--r-- | archaeological_finds/tests/importer-group.zip | bin | 0 -> 79390 bytes |
4 files changed, 65 insertions, 0 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index b4612619b..b0a0af7dc 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -34,6 +34,7 @@ from django.db.utils import IntegrityError from django.test.client import Client from django.urls import reverse from ishtar_common.models import ( + ImporterGroup, ImporterType, IshtarUser, ImporterColumn, @@ -694,6 +695,68 @@ class ImportFindTest(ImportTest, FindInit, TestCase): base_find = models.BaseFind.objects.get(pk=base_find.pk) self.assertEqual(base_find.main_geodata_id, new[0].pk) + def test_group_import(self): + root = os.path.join(settings.LIB_BASE_PATH, "archaeological_finds", "tests") + importer_filename = os.path.join(root, "importer-group.zip") + self.restore_serialized(importer_filename) + imp_group = ImporterGroup.objects.get(slug="chantier-des-depots") + imp_file = open(os.path.join(root, "importer-group.csv"), "rb") + file_dict = { + "imported_file": SimpleUploadedFile(imp_file.name, imp_file.read()) + } + post_dict = { + "importer_type": imp_group.pk, + "name": "find_group_import", + "encoding": "utf-8", + "skip_lines": 1, + "csv_sep": ",", + } + form = forms_common.NewImportGroupForm( + data=post_dict, files=file_dict, user=self.user + ) + self.assertFalse(form.is_valid()) + self.assertIn(str(_("This importer need a document archive.")), form.errors["__all__"]) + imp_media = open(os.path.join(root, "importer-group-media.zip"), "rb") + file_dict["imported_images"] = SimpleUploadedFile(imp_media.name, imp_media.read()) + form = forms_common.NewImportGroupForm( + data=post_dict, files=file_dict, user=self.user + ) + self.assertTrue(form.is_valid()) + impt = form.save(self.ishtar_user) + impt.initialize() + + Operation.objects.get_or_create( + code_patriarche="123456", + operation_type=OperationType.objects.all()[0] + ) + wt, __ = WarehouseType.objects.get_or_create(label="WT", txt_idx="WT") + w, __ = Warehouse.objects.get_or_create( + external_id="warh", + defaults={"name": "Warehouse test", "warehouse_type": wt}, + ) + div1, __ = ContainerType.objects.get_or_create(label="Div1", txt_idx="DIV1") + div2, __ = ContainerType.objects.get_or_create(label="Div2", txt_idx="DIV2") + WarehouseDivisionLink.objects.get_or_create( + warehouse=w, container_type=div1, order=10 + ) + WarehouseDivisionLink.objects.get_or_create( + warehouse=w, container_type=div2, order=20 + ) + ContainerType.objects.get_or_create(label="CT", txt_idx="CT") + + nb_base_find = models.BaseFind.objects.count() + nb_find = models.Find.objects.count() + nb_container = Container.objects.count() + nb_docs = Document.objects.count() + + impt.importation() + + self.assertEqual(models.BaseFind.objects.count(), nb_base_find + 1) + self.assertEqual(models.Find.objects.count(), nb_find + 1) + self.assertEqual(Container.objects.count(), nb_container + 3) # 1 new container + 2 divisions + self.assertEqual(Document.objects.count(), nb_docs + 1) + self.assertFalse(any(imp.error_file for imp in impt.imports.all()), msg="Error on group import") + def test_mcc_import_finds(self): self.init_context_record() diff --git a/archaeological_finds/tests/importer-group-media.zip b/archaeological_finds/tests/importer-group-media.zip Binary files differnew file mode 100644 index 000000000..4bb2da84f --- /dev/null +++ b/archaeological_finds/tests/importer-group-media.zip diff --git a/archaeological_finds/tests/importer-group.csv b/archaeological_finds/tests/importer-group.csv new file mode 100644 index 000000000..ca4d08b6e --- /dev/null +++ b/archaeological_finds/tests/importer-group.csv @@ -0,0 +1,2 @@ +Référence contenant,Type de contenant,Localisation 1,Localisation 2,Localisation 3,Localisation 4,Localisation 5,Localisation 6,Code opération,INSEE,Section de parcellaire,Numéro de parcelle,Identifiant UE,Identifiant objet ou lot,Identifiant précédent,Lot ou objet,Matériau(x),Type(s) d’objet(s),Description,Nombre,Poids (g.),Etat sanitaire,Types d'altération,Causes d'altération,Type de traitement recommandé,Urgence du traitement,Commentaire dur la conservation,Intégrité/intérêt,Remarquabilité,Date de découverte,Marquage,Localisation topographique,Commentaire général,Chronologie,CCE/dépôt concerné,Image,Identifiant document +WARH002000,CT,123,456,,,,,123456,59350,AK,1,US0007,123456-US0007-00001,,Lot,céramique,vaisselle,,,800,stable,,,,,,,Oui,01/07/1997,non marqués,,ancien contenant 42,,warh,test.png,test-jpg diff --git a/archaeological_finds/tests/importer-group.zip b/archaeological_finds/tests/importer-group.zip Binary files differnew file mode 100644 index 000000000..dc581c173 --- /dev/null +++ b/archaeological_finds/tests/importer-group.zip |