summaryrefslogtreecommitdiff
path: root/archaeological_context_records/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-06 13:49:17 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-06 13:49:52 +0100
commit90aa89e5d40b948a4227df5a197aa54c2254cc6c (patch)
tree45a3f957d8e43b6cf2030af7f3cfaf4b803648dc /archaeological_context_records/tests.py
parent376cc82d102a66b6776ec96dcdab81bb87c3af20 (diff)
downloadIshtar-90aa89e5d40b948a4227df5a197aa54c2254cc6c.tar.bz2
Ishtar-90aa89e5d40b948a4227df5a197aa54c2254cc6c.zip
Import tests: test limit model for context records - more explicit error message when dealing with limit model
Diffstat (limited to 'archaeological_context_records/tests.py')
-rw-r--r--archaeological_context_records/tests.py88
1 files changed, 84 insertions, 4 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 032861d5d..f1e6581d7 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2015-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -20,13 +20,12 @@
import json
from django.conf import settings
-from django.core.exceptions import ValidationError
-from django.core.files.uploadedfile import SimpleUploadedFile
+from django.core.exceptions import ValidationError, ImproperlyConfigured
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.test.client import Client
-from ishtar_common.models import ImporterType, IshtarSiteProfile
+from ishtar_common.models import IshtarSiteProfile, ImporterModel
from ishtar_common.tests import create_superuser
from archaeological_operations.tests import OperationInitTest, \
ImportTest, ImportOperationTest
@@ -61,6 +60,87 @@ class ImportContextRecordTest(ImportTest, TestCase):
models.ContextRecord.objects.filter(
unit__txt_idx='layer').count(), 1)
+ def test_model_limitation(self):
+ old_nb = models.ContextRecord.objects.count()
+ mcc, form = self.init_context_record_import()
+ mcc.created_models.clear()
+
+ self.assertTrue(form.is_valid())
+ impt = form.save(self.ishtar_user)
+ impt.initialize()
+
+ self.init_cr_targetkey(impt)
+ impt.importation()
+ # no model defined in created_models: normal import
+ current_nb = models.ContextRecord.objects.count()
+ self.assertEqual(current_nb, old_nb + 4)
+
+ # add an inadequate model to make created_models non empty
+ for cr in models.ContextRecord.objects.all():
+ cr.delete()
+ mcc, form = self.init_context_record_import()
+ mcc.created_models.clear()
+ mcc.created_models.add(ImporterModel.objects.get(
+ klass='ishtar_common.models.Organization'
+ ))
+ impt = form.save(self.ishtar_user)
+ impt.initialize()
+ self.init_cr_targetkey(impt)
+ # Dating is not in models that can be created but force new is
+ # set for a column that references Dating
+ with self.assertRaises(ImproperlyConfigured):
+ impt.importation()
+
+ # retry with only Dating (no context record)
+ for cr in models.ContextRecord.objects.all():
+ cr.delete()
+ mcc, form = self.init_context_record_import()
+ mcc.created_models.clear()
+ dat_model, c = ImporterModel.objects.get_or_create(
+ klass='archaeological_context_records.models.Dating',
+ defaults={"name": 'Dating'})
+ mcc.created_models.add(dat_model)
+ impt = form.save(self.ishtar_user)
+ impt.initialize()
+ self.init_cr_targetkey(impt)
+ impt.importation()
+
+ current_nb = models.ContextRecord.objects.count()
+ self.assertEqual(current_nb, 0)
+
+ # add a context record model
+ for cr in models.ContextRecord.objects.all():
+ cr.delete()
+ mcc, form = self.init_context_record_import()
+ mcc.created_models.clear()
+ mcc.created_models.add(ImporterModel.objects.get(
+ klass='archaeological_context_records.models.ContextRecord'
+ ))
+ mcc.created_models.add(dat_model)
+ impt = form.save(self.ishtar_user)
+ impt.initialize()
+ self.init_cr_targetkey(impt)
+ impt.importation()
+ current_nb = models.ContextRecord.objects.count()
+ self.assertEqual(current_nb, 4)
+ '''
+
+ # add a context record model
+ for cr in models.ContextRecord.objects.all():
+ cr.delete()
+ mcc, form = self.init_context_record_import()
+ mcc.created_models.clear()
+ mcc.created_models.add(ImporterModel.objects.get(
+ klass='archaeological_context_records.models.ContextRecord'
+ ))
+ impt = form.save(self.ishtar_user)
+ impt.initialize()
+ self.init_cr_targetkey(impt)
+ impt.importation()
+ current_nb = models.ContextRecord.objects.count()
+ self.assertEqual(current_nb, 4)
+ '''
+
class ContextRecordInit(OperationInitTest):
def create_context_record(self, user=None, data={}, force=False):