diff options
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r-- | archaeological_finds/tests.py | 63 |
1 files changed, 63 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() |