From 8687f3457c9626c455b23bd3495b87b86e0b5457 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 8 Sep 2023 14:22:16 +0200 Subject: ✅ Import group - test import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archaeological_finds/tests.py | 63 +++++++++++++++++++++ .../tests/importer-group-media.zip | Bin 0 -> 888 bytes archaeological_finds/tests/importer-group.csv | 2 + archaeological_finds/tests/importer-group.zip | Bin 0 -> 79390 bytes 4 files changed, 65 insertions(+) create mode 100644 archaeological_finds/tests/importer-group-media.zip create mode 100644 archaeological_finds/tests/importer-group.csv create mode 100644 archaeological_finds/tests/importer-group.zip 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 new file mode 100644 index 000000000..4bb2da84f Binary files /dev/null and b/archaeological_finds/tests/importer-group-media.zip differ 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 new file mode 100644 index 000000000..dc581c173 Binary files /dev/null and b/archaeological_finds/tests/importer-group.zip differ -- cgit v1.2.3