summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-04-18 18:42:42 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-04-19 10:16:28 +0200
commit45769bc5b440183dd5e46b40ec2cdd364a3a01db (patch)
treeb5975ad978b4e9ef62b712aa5d2962b0c876db4e /archaeological_finds
parent7e631d9a322a8bb530652e7adac073d18baf326b (diff)
downloadIshtar-45769bc5b440183dd5e46b40ec2cdd364a3a01db.tar.bz2
Ishtar-45769bc5b440183dd5e46b40ec2cdd364a3a01db.zip
✨ imports: allow media import from a web location
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/tests.py68
1 files changed, 64 insertions, 4 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 45f178856..d5f763467 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -31,6 +31,7 @@ from django.contrib.auth.models import User, Permission, ContentType
from django.core.files import File
from django.core.files.uploadedfile import SimpleUploadedFile
from django.db.utils import IntegrityError
+from django.test import LiveServerTestCase
from django.test.client import Client
from django.urls import reverse
from ishtar_common.models import (
@@ -626,15 +627,20 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
# treat)
-class ImportFindTest(ImportTest, FindInit, TestCase):
+class BaseImportFindTest(ImportTest, FindInit, TestCase):
fixtures = FIND_TOWNS_FIXTURES + [
settings.LIB_BASE_PATH + "archaeological_finds/tests/import_loca_test.json",
]
def setUp(self):
- super(ImportFindTest, self).setUp()
+ super().setUp()
self.tmpdir = tempfile.TemporaryDirectory()
+ def tearDown(self):
+ self.tmpdir.cleanup()
+
+
+class ImportFindTest(BaseImportFindTest):
def test_geo_import_csv(self):
self._test_geo_import("importer-GIS-find", 1)
@@ -992,8 +998,62 @@ class ImportFindTest(ImportTest, FindInit, TestCase):
# check errors
self.assertEqual(len(impt.errors), 0)
- def tearDown(self):
- self.tmpdir.cleanup()
+
+class ImportFindLiveServerTest(LiveServerTestCase, BaseImportFindTest):
+
+ def setUp(self):
+ import ishtar_common
+ path = ["/"] + ishtar_common.__file__.split(os.sep)[:-1] + ["tests", "test.png"]
+ shutil.copy(
+ os.path.join(*path),
+ os.path.join(settings.ROOT_PATH, "media", "image-1.jpg"),
+ )
+ super().setUp()
+
+ def test_mcc_import_finds_with_image_link(self):
+ self.init_context_record()
+
+ old_nb = models.BaseFind.objects.count()
+ old_nb_find = models.Find.objects.count()
+ MCC = ImporterType.objects.get(name="MCC - Mobilier")
+
+ col = ImporterColumn.objects.create(col_number=25, importer_type_id=MCC.pk)
+ formater = FormaterType.objects.filter(formater_type="FileFormater").all()[0]
+ ImportTarget.objects.create(
+ target="documents__image", formater_type_id=formater.pk, column_id=col.pk
+ )
+ mcc_file = open(
+ settings.LIB_BASE_PATH + "archaeological_finds/tests/MCC-finds-example.csv",
+ "rb",
+ )
+ file_dict = {
+ "imported_file": SimpleUploadedFile(mcc_file.name, mcc_file.read()),
+ }
+ post_dict = {
+ "importer_type": MCC.pk,
+ "skip_lines": 1,
+ "encoding": "utf-8",
+ "name": "init_find_import",
+ "csv_sep": ",",
+ "imported_media_link": f"{self.live_server_url}/media/"
+ }
+ form = forms_common.BaseImportForm(
+ data=post_dict, files=file_dict, user=self.user
+ )
+ form.is_valid()
+ self.assertTrue(form.is_valid())
+ impt = form.save(self.ishtar_user)
+ impt.initialize()
+ impt.importation()
+ # new finds has now been imported
+ current_nb = models.BaseFind.objects.count()
+ self.assertEqual(current_nb, (old_nb + 4))
+ current_nb = models.Find.objects.count()
+ self.assertEqual(current_nb, (old_nb_find + 4))
+ images = []
+ for find in models.Find.objects.all():
+ images += [1 for im in find.images.all() if im.image.name]
+ self.assertEqual(len(images), 1)
class FindTest(FindInit, TestCase):