summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-09-08 14:22:16 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-02-05 10:51:51 +0100
commit8687f3457c9626c455b23bd3495b87b86e0b5457 (patch)
treee9f41bb2d48baee3bfe7c0233e82458229d8ae16
parent0ad415c7795e7ac4b2a70c03d993b027633ca0f6 (diff)
downloadIshtar-8687f3457c9626c455b23bd3495b87b86e0b5457.tar.bz2
Ishtar-8687f3457c9626c455b23bd3495b87b86e0b5457.zip
✅ Import group - test import
-rw-r--r--archaeological_finds/tests.py63
-rw-r--r--archaeological_finds/tests/importer-group-media.zipbin0 -> 888 bytes
-rw-r--r--archaeological_finds/tests/importer-group.csv2
-rw-r--r--archaeological_finds/tests/importer-group.zipbin0 -> 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
new file mode 100644
index 000000000..4bb2da84f
--- /dev/null
+++ b/archaeological_finds/tests/importer-group-media.zip
Binary files 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
--- /dev/null
+++ b/archaeological_finds/tests/importer-group.zip
Binary files differ