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