diff options
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/tests.py | 68 |
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): |