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-04-16 16:38:32 +0200
commit4423f127ac503c8a28d91cd279a20019acb8023a (patch)
treebfea942cf05ba4bd2635d321b2f98e914433d68c
parenta9c7a217383ead98acc4fd55d635c58f1aad9c26 (diff)
downloadIshtar-4423f127ac503c8a28d91cd279a20019acb8023a.tar.bz2
Ishtar-4423f127ac503c8a28d91cd279a20019acb8023a.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