summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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