summaryrefslogtreecommitdiff
path: root/archaeological_context_records/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_context_records/tests.py')
-rw-r--r--archaeological_context_records/tests.py141
1 files changed, 97 insertions, 44 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 87eb80c57..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,76 +20,129 @@
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, \
- ImportOperationTest
+ ImportTest, ImportOperationTest
from archaeological_operations import models as models_ope
from archaeological_context_records import models
-from ishtar_common import forms_common
-class ImportContextRecordTest(ImportOperationTest):
- test_operations = False
- test_context_records = True
+class ImportContextRecordTest(ImportTest, TestCase):
fixtures = ImportOperationTest.fixtures + [
settings.ROOT_PATH +
'../archaeological_context_records/fixtures/initial_data-fr.json',
]
- def testMCCImportContextRecords(self, test=True):
- if test and not self.test_context_records:
- return
- self.testMCCImportParcels(test=False)
-
+ def test_mcc_import_contextrecords(self):
old_nb = models.ContextRecord.objects.count()
- MCC = ImporterType.objects.get(name=u"MCC - UE")
- mcc_file = open(
- settings.ROOT_PATH +
- '../archaeological_context_records/tests/'
- 'MCC-context-records-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'}
- form = forms_common.NewImportForm(data=post_dict, files=file_dict,
- instance=None)
- form.is_valid()
- if test:
- self.assertTrue(form.is_valid())
+ mcc, form = self.init_context_record_import()
+
+ self.assertTrue(form.is_valid())
impt = form.save(self.ishtar_user)
impt.initialize()
- # doing manual connections
- hc = models.Unit.objects.get(txt_idx='not_in_context').pk
- self.setTargetKey('unit', 'hc', hc)
- self.setTargetKey('unit', 'hors-contexte', hc)
- layer = models.Unit.objects.get(txt_idx='layer').pk
- self.setTargetKey('unit', 'couche', layer)
-
+ self.init_cr_targetkey(impt)
impt.importation()
- if not test:
- return
-
- # new ues has now been imported
+ # new context records has now been imported
current_nb = models.ContextRecord.objects.count()
- self.assertTrue(current_nb == (old_nb + 4))
+ self.assertEqual(current_nb, old_nb + 4)
self.assertEqual(
- models.ContextRecord.objects.filter(unit__pk=hc).count(), 3)
+ models.ContextRecord.objects.filter(
+ unit__txt_idx='not_in_context').count(), 3)
self.assertEqual(
- models.ContextRecord.objects.filter(unit__pk=layer).count(), 1)
+ 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):
- test_operations = False
+class ContextRecordInit(OperationInitTest):
def create_context_record(self, user=None, data={}, force=False):
if not getattr(self, 'context_records', None):
self.context_records = []