summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-01-07 17:01:15 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:23 +0100
commit1bd10cc3c50ca5c3daca6d04ecd5dfa94f7f3dca (patch)
treeca1a7659db18b4edc950e729ccfbd99fd0fd2260 /archaeological_finds
parent10e7c72a87c322c783195437aeff6a19fb17550f (diff)
downloadIshtar-1bd10cc3c50ca5c3daca6d04ecd5dfa94f7f3dca.tar.bz2
Ishtar-1bd10cc3c50ca5c3daca6d04ecd5dfa94f7f3dca.zip
Auto-generate labels from a base libreoffice template
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/tests.py68
-rw-r--r--archaeological_finds/tests/bad_lo.zipbin0 -> 10469 bytes
l---------archaeological_finds/tests/etiquettes-mobilier1
-rw-r--r--archaeological_finds/tests/etiquettes-mobilier.odtbin0 -> 11151 bytes
-rw-r--r--archaeological_finds/tests/etiquettes-mobilier.txt1
-rw-r--r--archaeological_finds/tests/truncated_xml.zipbin0 -> 12404 bytes
6 files changed, 69 insertions, 1 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 548a74e7b..93548f8fc 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -38,7 +38,8 @@ from django.core.urlresolvers import reverse
from django.test import tag
from django.test.client import Client
from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\
- FormaterType, ImportTarget, IshtarSiteProfile, ProfileType
+ FormaterType, ImportTarget, IshtarSiteProfile, ProfileType, ImporterModel, \
+ DocumentTemplate
from django.utils.text import slugify
from django.utils.translation import pgettext_lazy, gettext_lazy as _
@@ -2513,3 +2514,68 @@ class PublicAPITest(FindInit, APITestCase):
value = value[key]
self.assertEqual(value, result)
+
+class LabelTest(FindInit, TestCase):
+ fixtures = FIND_FIXTURES
+ model = models.Find
+
+ def setUp(self):
+ templates = [
+ settings.ROOT_PATH + '../archaeological_finds/tests/' + t
+ for t in ("etiquettes-mobilier.odt", "etiquettes-mobilier",
+ "etiquettes-mobilier.txt", "bad_lo.zip",
+ "truncated_xml.zip")
+ ]
+ self.templates = []
+ for template in templates:
+ filename = template.split("/")[-1]
+ shutil.copy(template,
+ os.path.join(settings.MEDIA_ROOT, filename),
+ follow_symlinks=True)
+ self.templates.append(
+ os.path.join(settings.MEDIA_ROOT, filename))
+
+ def tearDown(self):
+ for tpl in self.templates:
+ if os.path.exists(tpl):
+ os.remove(tpl)
+
+ def test_label(self):
+ base_targets = ";".join("Cadre{}".format(idx) for idx in range(1, 25))
+ base_tpl, missing_ext, text_file, bad_lo, trunc_xml = self.templates
+ dataset = (
+ (base_tpl, base_targets, True, "OK"),
+ (base_tpl, "", False, "no target"),
+ (base_tpl, "-;Cadre2;Cadre3", False, "bad first target"),
+ (base_tpl, "Cadre1;Frame2;Frame3", True,
+ "first target OK, silently failed other targets"),
+ (missing_ext, base_targets, True, "missing extension"),
+ (text_file, base_targets, False, "text file"),
+ (bad_lo, base_targets, False, "missing content.xml"),
+ (trunc_xml, base_targets, False, "truncated content.xml"),
+ )
+ for tpl_file, targets, is_ok, msg in dataset:
+ with open(tpl_file, 'rb') as tpl:
+ template = SimpleUploadedFile("etiquettes-mobilier.odt",
+ tpl.read())
+ model, __ = ImporterModel.objects.get_or_create(
+ klass='archaeological_finds.models.Find'
+ )
+ q = DocumentTemplate.objects.filter(slug="test")
+ if q.count():
+ q.all()[0].delete()
+ doc = DocumentTemplate.objects.create(
+ name="Test",
+ slug="test",
+ associated_model=model,
+ available=True,
+ label_targets=targets,
+ label_template=template)
+ self.templates.append(doc.label_template.path)
+ doc = DocumentTemplate.objects.get(pk=doc.pk)
+ msg = "Fail on dataset: " + msg
+ if is_ok:
+ self.assertTrue(doc.template.name, msg=msg)
+ self.templates.append(doc.template.path)
+ else:
+ self.assertFalse(doc.template.name, msg=msg)
diff --git a/archaeological_finds/tests/bad_lo.zip b/archaeological_finds/tests/bad_lo.zip
new file mode 100644
index 000000000..f05cd2d0b
--- /dev/null
+++ b/archaeological_finds/tests/bad_lo.zip
Binary files differ
diff --git a/archaeological_finds/tests/etiquettes-mobilier b/archaeological_finds/tests/etiquettes-mobilier
new file mode 120000
index 000000000..89ec4030b
--- /dev/null
+++ b/archaeological_finds/tests/etiquettes-mobilier
@@ -0,0 +1 @@
+etiquettes-mobilier.odt \ No newline at end of file
diff --git a/archaeological_finds/tests/etiquettes-mobilier.odt b/archaeological_finds/tests/etiquettes-mobilier.odt
new file mode 100644
index 000000000..7a8ffdedb
--- /dev/null
+++ b/archaeological_finds/tests/etiquettes-mobilier.odt
Binary files differ
diff --git a/archaeological_finds/tests/etiquettes-mobilier.txt b/archaeological_finds/tests/etiquettes-mobilier.txt
new file mode 100644
index 000000000..de2d58990
--- /dev/null
+++ b/archaeological_finds/tests/etiquettes-mobilier.txt
@@ -0,0 +1 @@
+Non libreoffice file
diff --git a/archaeological_finds/tests/truncated_xml.zip b/archaeological_finds/tests/truncated_xml.zip
new file mode 100644
index 000000000..830918c5a
--- /dev/null
+++ b/archaeological_finds/tests/truncated_xml.zip
Binary files differ