diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-07-11 14:49:28 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-07-11 14:49:28 +0200 |
commit | 4fcc46584a2f55048173c0d718be5bf76a74127d (patch) | |
tree | 2054df617244c89d93b7a3b678d13ea25d78a92f | |
parent | f64baa1026aaf79e62cd604ac94dc21382f07e5a (diff) | |
parent | fba85439ce71086c6153cb3bb57b48567bbfad85 (diff) | |
download | Ishtar-4fcc46584a2f55048173c0d718be5bf76a74127d.tar.bz2 Ishtar-4fcc46584a2f55048173c0d718be5bf76a74127d.zip |
Merge branch 'master' into v0.9
-rw-r--r-- | CHANGES.md | 11 | ||||
-rw-r--r-- | archaeological_context_records/tests.py | 43 | ||||
-rw-r--r-- | archaeological_files/models.py | 2 | ||||
-rw-r--r-- | archaeological_files/tests.py | 25 | ||||
-rw-r--r-- | archaeological_finds/tests.py | 27 | ||||
-rw-r--r-- | archaeological_finds/wizards.py | 1 | ||||
-rw-r--r-- | archaeological_operations/tests.py | 13 | ||||
-rw-r--r-- | ishtar_common/forms_common.py | 2 | ||||
-rw-r--r-- | ishtar_common/tests.py | 30 | ||||
-rw-r--r-- | ishtar_common/wizards.py | 9 | ||||
-rw-r--r-- | version.py | 2 |
11 files changed, 126 insertions, 39 deletions
diff --git a/CHANGES.md b/CHANGES.md index 20a3113db..d936b7cb2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,17 @@ Ishtar changelog ================ +v0.99.23 (2017-07-11) +--------------------- +### Features ### +- Tests: add show-* tests +- Tests: improve wizard test management + +### Bug fixes ### +- Fix find deletion when warehouse module is activated +- Archaeologivcal files: safely manage is_preventive test if preventive type is not created - show-file test +- Account : fix form initialization when raw name is empty + v0.99.22 (2017-06-30) --------------------- ### Features ### diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index 07360f73a..b613b837e 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -339,6 +339,19 @@ class ContextRecordTest(ContextRecordInit, TestCase): # reached self.assertEqual(len(test_obj.find_reached), 0) + def test_show(self): + obj = self.context_records[0] + c = Client() + response = c.get(reverse('show-contextrecord', kwargs={'pk': obj.pk})) + self.assertEqual(response.status_code, 200) + # empty content when not allowed + self.assertEqual(response.content, "") + + c.login(username=self.username, password=self.password) + response = c.get(reverse('show-contextrecord', kwargs={'pk': obj.pk})) + self.assertEqual(response.status_code, 200) + self.assertIn('class="sheet"', response.content) + class ContextRecordSearchTest(ContextRecordInit, TestCase): fixtures = ImportContextRecordTest.fixtures @@ -541,26 +554,26 @@ class ContextRecordWizardCreationTest(WizardTest, ContextRecordInit, TestCase): FormData( "Create a simple context record", form_datas={ - 'selec-record_creation': {}, - 'general-record_creation': { + 'selec': {}, + 'general': { 'label': "First" }, + 'relations': [] }, - ignored=('datings-record_creation', - 'interpretation-record_creation', - 'relations-record_creation',) + ignored=('datings', + 'interpretation', + ) ), FormData( "Create a context record with a relation", form_datas={ - 'selec-record_creation': {}, - 'general-record_creation': { + 'selec': {}, + 'general': { 'label': "Second" }, - 'relations-record_creation': [] + 'relations': [] }, - ignored=('datings-record_creation', - 'interpretation-record_creation',) + ignored=('datings', 'interpretation',) ), ] @@ -573,13 +586,13 @@ class ContextRecordWizardCreationTest(WizardTest, ContextRecordInit, TestCase): ope = self.get_default_operation() parcel = self.get_default_parcel() for form_data in self.form_datas: - form_data.form_datas['selec-record_creation']['operation_id'] = \ - ope.pk - form_data.form_datas['general-record_creation']['parcel'] = \ - parcel.pk + form_data.set('selec', 'operation_id', ope.pk) + form_data.set('general', 'parcel', parcel.pk) self.related_cr = self.create_context_record(data={'operation': ope})[0] - self.form_datas[1].form_datas['relations-record_creation'].append( + + self.form_datas[1].append( + 'relations', {'right_record': self.related_cr.pk, 'relation_type': models.RelationType.objects.create( label="Test").pk} diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 52f628817..195418bc8 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -49,7 +49,7 @@ class FileType(GeneralType): try: preventive = FileType.get_cache(key).pk return file_type_id == preventive - except FileType.DoesNotExist: + except (FileType.DoesNotExist, AttributeError): return False post_save.connect(post_save_cache, sender=FileType) post_delete.connect(post_save_cache, sender=FileType) diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py index 2b0a63af8..82f85e7c9 100644 --- a/archaeological_files/tests.py +++ b/archaeological_files/tests.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-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 @@ -17,14 +17,13 @@ # See the file COPYING for details. -""" -Unit tests -""" import datetime import json from django.conf import settings from django.contrib.auth.models import User +from django.core.urlresolvers import reverse +from django.test.client import Client from ishtar_common.tests import TestCase @@ -225,11 +224,19 @@ class FileTest(TestCase, FileInit): # our parcel has no operation attached and should be deleted self.assertEqual(parcel_nb - 1, Parcel.objects.count()) -# class ImporterTest(TestCase): -# def testFormaters(self): -# from archaeological_files import data_importer -# for formater in [data_importer.SurfaceFormater]: -# formater().test() + def test_show(self): + c = Client() + url = 'show-file' + pk = self.item.pk + response = self.client.get(reverse(url, kwargs={'pk': pk})) + self.assertEqual(response.status_code, 200) + # empty content when not allowed + self.assertEqual(response.content, "") + + self.login_as_superuser() + response = self.client.get(reverse(url, kwargs={'pk': pk})) + self.assertEqual(response.status_code, 200) + self.assertIn('class="sheet"', response.content) class FileOperationTest(TestCase, OperationInitTest, FileInit): diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index 3d33cf693..b6382b720 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -292,11 +292,12 @@ class FindTest(FindInit, TestCase): def setUp(self): self.create_finds(force=True) - password = 'mypassword' - my_admin = User.objects.create_superuser( - 'myuser', 'myemail@test.com', password) + self.password = 'mypassword' + self.username = 'myuser' + User.objects.create_superuser(self.username, 'myemail@test.com', + self.password) self.client = Client() - self.client.login(username=my_admin.username, password=password) + self.client.login(username=self.username, password=self.password) def testExternalID(self): find = self.finds[0] @@ -374,12 +375,22 @@ class FindTest(FindInit, TestCase): self.assertEqual(find_3b.index, 2) self.assertEqual(bf_3b.index, 2) - def testShowFind(self): - find = self.finds[0] - response = self.client.get(reverse('display-find', args=[find.pk])) + def test_show(self): + obj = self.finds[0] + response = self.client.get(reverse('display-find', args=[obj.pk])) self.assertEqual(response.status_code, 200) - self.assertIn('load_window("/show-find/{}/");'.format(find.pk), + self.assertIn('load_window("/show-find/{}/");'.format(obj.pk), response.content) + c = Client() + response = c.get(reverse('show-find', kwargs={'pk': obj.pk})) + self.assertEqual(response.status_code, 200) + # empty content when not allowed + self.assertEqual(response.content, "") + + c.login(username=self.username, password=self.password) + response = self.client.get(reverse('show-find', kwargs={'pk': obj.pk})) + self.assertEqual(response.status_code, 200) + self.assertIn('class="sheet"', response.content) class FindSearchTest(FindInit, TestCase): diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 43fe6262f..b4471a80b 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -83,6 +83,7 @@ class FindModificationWizard(FindWizard): class FindDeletionWizard(DeletionWizard): model = models.Find + main_item_select_keys = ('selec-', 'selecw-') fields = ['label', 'material_types', 'datings', 'find_number', 'object_types', 'description', 'conservatory_state', 'mark', 'preservation_to_considers', 'integrities', 'remarkabilities', diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index b2f38801a..2cb6dd035 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -875,6 +875,19 @@ class OperationTest(TestCase, OperationInitTest): op_code_idx, lbl = find.cached_label.split(' | ') self.assertEqual(op_code_idx, 'OA666-00001') + def test_show(self): + operation = self.operations[0] + c = Client() + response = c.get(reverse('show-operation', kwargs={'pk': operation.pk})) + self.assertEqual(response.status_code, 200) + # empty content when not allowed + self.assertEqual(response.content, "") + + c.login(username=self.username, password=self.password) + response = c.get(reverse('show-operation', kwargs={'pk': operation.pk})) + self.assertEqual(response.status_code, 200) + self.assertIn('class="sheet"', response.content) + class OperationSearchTest(TestCase, OperationInitTest): fixtures = [settings.ROOT_PATH + diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 61e9f1a88..44af3a588 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -595,7 +595,7 @@ class AccountForm(forms.Form): if 'person' in kwargs: person = kwargs.pop('person') super(AccountForm, self).__init__(*args, **kwargs) - if person: + if person and person.raw_name: self.fields['username'].initial = \ person.raw_name.lower().replace(' ', '.') diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 174918dd4..536d6d4a8 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -129,15 +129,45 @@ class WizardTestFormData(object): accepting two parameters: the current test object and the final step response """ + self.name = name self.form_datas = form_datas self.ignored = ignored[:] self.pre_tests = pre_tests self.extra_tests = extra_tests + def set(self, form_name, field_name, value): + """ + Set data value. + + :param form_name: form name without wizard name + :param field_name: field name + :param value: value + :return: None + """ + self.form_datas[form_name][field_name] = value + + def append(self, form_name, value): + """ + Add data value to formset. + + :param form_name: form name without wizard name + :param value: value + :return: None + """ + self.form_datas[form_name].append(value) + def inits(self, test_object): """ Initialisations before the wizard. """ + + suffix = '-' + test_object.url_name + # if form names are defined without url_name fix it + for form_name in self.form_datas.keys(): + if suffix in form_name: + continue + self.form_datas[form_name + suffix] = self.form_datas.pop(form_name) + for pre in self.pre_tests: pre(test_object) diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 8d787d733..3f90f8c48 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -1232,10 +1232,11 @@ class DeletionWizard(Wizard): def done(self, form_list, **kwargs): obj = self.get_current_object() - try: - obj.delete() - except ObjectDoesNotExist: - pass + if obj: + try: + obj.delete() + except ObjectDoesNotExist: + pass return render_to_response( 'ishtar/wizard/wizard_delete_done.html', {}, context_instance=RequestContext(self.request)) diff --git a/version.py b/version.py index 9c03d80c5..e7ae337c7 100644 --- a/version.py +++ b/version.py @@ -1,4 +1,4 @@ -VERSION = (0, 99, 22) +VERSION = (0, 99, 23) def get_version(): |