summaryrefslogtreecommitdiff
path: root/archaeological_finds/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r--archaeological_finds/tests.py96
1 files changed, 84 insertions, 12 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index b4a798807..5ea5adfb7 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -29,7 +29,7 @@ from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\
FormaterType, ImportTarget, IshtarSiteProfile
from ishtar_common.models import Person, get_current_profile
-from archaeological_context_records.models import Period, Dating
+from archaeological_context_records.models import Period, Dating, ContextRecord
from archaeological_finds import models, views
from archaeological_warehouse.models import Warehouse, WarehouseType
@@ -37,7 +37,7 @@ from ishtar_common import forms_common
from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
TestCase
-from archaeological_operations.tests import ImportTest
+from archaeological_operations.tests import ImportTest, create_operation
from archaeological_context_records.tests import ContextRecordInit, \
CONTEXT_RECORD_FIXTURES, CONTEXT_RECORD_TOWNS_FIXTURES
@@ -68,8 +68,11 @@ class FindInit(ContextRecordInit):
self.base_finds = []
default = {'label': "Base find"}
- if not data_base.get('history_modifier'):
- data_base['history_modifier'] = self.get_default_user()
+ if not data_base.get('history_modifier') or not data_base[
+ 'history_modifier'].pk:
+ user = self.get_default_user()
+ user.save()
+ data_base['history_modifier'] = user
if force or not data_base.get('context_record'):
data_base['context_record'] = self.get_default_context_record(
force=force)
@@ -203,15 +206,15 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
FormData(
'Move treament',
form_datas={
- 'file-treatment_creation': {},
- 'basetreatment-treatment_creation': {
- 'treatment_type': 4, # move
+ 'file': {},
+ 'basetreatment': {
+ 'treatment_type': None,
'person': 1, # doer
'location': 1, # associated warehouse
'year': 2016,
'target_is_basket': False
},
- 'selecfind-treatment_creation': {
+ 'selecfind': {
'pk': 1,
'resulting_pk': 1
}
@@ -233,10 +236,14 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
person = Person.objects.create(name="default")
person.id = 1
person.save()
+
+ trt_type = models.TreatmentType.objects.get(txt_idx='moving')
+ self.form_datas[0].set('basetreatment', 'treatment_type', trt_type.pk)
+
self.find, base_find = self.get_default_find(force=True)
- self.form_datas[0].form_datas['selecfind-treatment_creation'][
+ self.form_datas[0].form_datas['selecfind'][
'pk'] = self.find.pk
- self.form_datas[0].form_datas['selecfind-treatment_creation'][
+ self.form_datas[0].form_datas['selecfind'][
'resulting_pk'] = self.find.pk
self.treatment_number = models.Treatment.objects.count()
super(TreatmentWizardCreationTest, self).pre_wizard()
@@ -280,8 +287,9 @@ class ImportFindTest(ImportTest, TestCase):
'imported_images': SimpleUploadedFile(mcc_images.name,
mcc_images.read())}
post_dict = {'importer_type': MCC.pk, 'skip_lines': 1,
- "encoding": 'utf-8'}
- form = forms_common.NewImportForm(data=post_dict, files=file_dict)
+ "encoding": 'utf-8', "name": 'init_find_import'}
+ form = forms_common.NewImportForm(data=post_dict, files=file_dict,
+ user=self.user)
form.is_valid()
self.assertTrue(form.is_valid())
impt = form.save(self.ishtar_user)
@@ -305,6 +313,22 @@ class ImportFindTest(ImportTest, TestCase):
images = [f.image for f in models.Find.objects.all() if f.image.name]
self.assertEqual(len(images), 1)
+ # check index
+ bfs = list(models.BaseFind.objects.order_by("-pk").all())
+ for idx in range(4):
+ bf = bfs[idx]
+ expected_index = 4 - idx
+ self.assertEqual(
+ bf.index, expected_index,
+ "Bad index for imported base find: {} where {} is "
+ "expected".format(bf.index, expected_index))
+ f = bf.find.all()[0]
+ self.assertEqual(
+ f.index, expected_index,
+ "Bad index for imported find: {} where {} is expected".format(
+ f.index, expected_index
+ ))
+
class FindTest(FindInit, TestCase):
fixtures = FIND_FIXTURES
@@ -332,6 +356,32 @@ class FindTest(FindInit, TestCase):
u"{}-{}".format(
base_find.context_record.external_id,
base_find.label))
+ base_find.label = "New label"
+ base_find.save()
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ self.assertEqual(
+ base_find.external_id,
+ u"{}-{}".format(
+ base_find.context_record.external_id,
+ "New label"))
+ cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
+ cr.label = "new-label-too"
+ cr.skip_history_when_saving = True
+ cr.save()
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ find = models.Find.objects.get(pk=find.pk)
+ cr = ContextRecord.objects.get(pk=cr.pk)
+ self.assertIn("new-label-too", find.external_id)
+ self.assertIn("new-label-too", base_find.external_id)
+
+ cr.operation.code_patriarche = "PAT"
+ cr.operation.skip_history_when_saving = True
+ cr.operation.save()
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ find = models.Find.objects.get(pk=find.pk)
+ cr = ContextRecord.objects.get(pk=cr.pk)
+ self.assertIn("PAT", find.external_id)
+ self.assertIn("PAT", base_find.external_id)
def testIndex(self):
profile = get_current_profile()
@@ -476,6 +526,28 @@ class FindSearchTest(FindInit, TestCase):
self.assertEqual(response.status_code, 200)
self.assertTrue(json.loads(response.content)['total'] == 1)
+ def test_pinned_search(self):
+ c = Client()
+ c.login(username=self.username, password=self.password)
+
+ # operation with no associated find
+ operation = create_operation(self.user, values={"year": 2017})
+ c.get(reverse("pin", args=["operation", operation.pk]))
+ response = c.get(reverse('get-find'), {}) # empty search -> check pined
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(json.loads(response.content)['total'], 0)
+
+ # pinned operation with current find
+ find = self.finds[0]
+ c.get(reverse(
+ "pin",
+ args=["operation",
+ find.get_first_base_find().context_record.operation.pk]))
+ response = c.get(reverse('get-find'), {}) # empty search -> check pined
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(json.loads(response.content)['total'], 1)
+
+
def testPeriodHierarchicSearch(self):
find = self.finds[0]
c = Client()