summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit4fcc46584a2f55048173c0d718be5bf76a74127d (patch)
tree2054df617244c89d93b7a3b678d13ea25d78a92f
parentf64baa1026aaf79e62cd604ac94dc21382f07e5a (diff)
parentfba85439ce71086c6153cb3bb57b48567bbfad85 (diff)
downloadIshtar-4fcc46584a2f55048173c0d718be5bf76a74127d.tar.bz2
Ishtar-4fcc46584a2f55048173c0d718be5bf76a74127d.zip
Merge branch 'master' into v0.9
-rw-r--r--CHANGES.md11
-rw-r--r--archaeological_context_records/tests.py43
-rw-r--r--archaeological_files/models.py2
-rw-r--r--archaeological_files/tests.py25
-rw-r--r--archaeological_finds/tests.py27
-rw-r--r--archaeological_finds/wizards.py1
-rw-r--r--archaeological_operations/tests.py13
-rw-r--r--ishtar_common/forms_common.py2
-rw-r--r--ishtar_common/tests.py30
-rw-r--r--ishtar_common/wizards.py9
-rw-r--r--version.py2
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():