diff options
| -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(): | 
