summaryrefslogtreecommitdiff
path: root/ishtar_common/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r--ishtar_common/tests.py171
1 files changed, 113 insertions, 58 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index b862b4ea7..ad623980d 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -27,47 +27,17 @@ from django.contrib.contenttypes.models import ContentType
from django.core.cache import cache
from django.core.exceptions import ValidationError
from django.core.files.base import File as DjangoFile
-from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.management import call_command
from django.core.urlresolvers import reverse
-from django.db import connection, transaction
from django.template.defaultfilters import slugify
from django.test import TestCase as BaseTestCase
from django.test.client import Client
-from django.test.simple import DjangoTestSuiteRunner
+from django.test.runner import DiscoverRunner
from ishtar_common import models
-from ishtar_common import forms_common
+from ishtar_common import views
from ishtar_common.utils import post_save_point
-from archaeological_context_records.models import CRBulkView
-from archaeological_finds.models import BFBulkView, FBulkView, FirstBaseFindView
-
-"""
-from django.conf import settings
-import tempfile, datetime
-from zipfile import ZipFile, ZIP_DEFLATED
-
-from oook_replace.oook_replace import oook_replace
-
-class OOOGenerationTest(TestCase):
- def testGeneration(self):
- context = {'test_var':u"Testé", 'test_var2':u"",
- "test_date":datetime.date(2015, 1, 1)}
- tmp = tempfile.TemporaryFile()
- oook_replace("../ishtar_common/tests/test-file.odt", tmp, context)
- inzip = ZipFile(tmp, 'r', ZIP_DEFLATED)
- value = inzip.read('content.xml')
- self.assertTrue(u"Testé" in value or "Testé" in value)
- self.assertTrue("testé 2" not in value and "testé 2" not in value)
- self.assertTrue("2015" in value)
- lg, ct = settings.LANGUAGE_CODE.split('-')
- if lg == 'fr':
- self.assertTrue('janvier' in value)
- if lg == 'en':
- self.assertTrue('january' in value)
-"""
-
COMMON_FIXTURES = [
settings.ROOT_PATH + '../fixtures/initial_data-auth-fr.json',
@@ -87,14 +57,22 @@ OPERATION_FIXTURES = COMMON_FIXTURES + [
def create_superuser():
username = 'username4277'
password = 'dcbqj756456!@%'
+ q = User.objects.filter(username=username)
+ if q.count():
+ return username, password, q.all()[0]
user = User.objects.create_superuser(username, "nomail@nomail.com",
password)
+ user.set_password(password)
+ user.save()
return username, password, user
def create_user():
username = 'username678'
- password = 'dcbqj756456!@%'
+ password = 'dcbqj756aaa456!@%'
+ q = User.objects.filter(username=username)
+ if q.count():
+ return username, password, q.all()[0]
user = User.objects.create_user(username, email="nomail2@nomail.com")
user.set_password(password)
user.save()
@@ -102,14 +80,7 @@ def create_user():
class TestCase(BaseTestCase):
- def _pre_setup(self):
- super(TestCase, self)._pre_setup()
- if settings.USE_SPATIALITE_FOR_TESTS:
- return
- c = connection.cursor()
- for view in [CRBulkView, FirstBaseFindView, BFBulkView, FBulkView]:
- c.execute(view.CREATE_SQL)
- transaction.commit_unless_managed()
+ pass
class CommandsTestCase(TestCase):
@@ -132,7 +103,7 @@ class WizardTestFormData(object):
"""
Test set to simulate wizard steps
"""
- def __init__(self, name, form_datas, ignored=[], pre_tests=[],
+ def __init__(self, name, form_datas={}, ignored=[], pre_tests=[],
extra_tests=[]):
"""
:param name: explicit name of the test
@@ -159,6 +130,8 @@ class WizardTestFormData(object):
:param value: value
:return: None
"""
+ if form_name not in self.form_datas:
+ self.form_datas[form_name] = {}
self.form_datas[form_name][field_name] = value
def append(self, form_name, value):
@@ -169,6 +142,8 @@ class WizardTestFormData(object):
:param value: value
:return: None
"""
+ if form_name not in self.form_datas:
+ self.form_datas[form_name] = {}
self.form_datas[form_name].append(value)
def inits(self, test_object):
@@ -182,7 +157,6 @@ class WizardTestFormData(object):
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)
@@ -194,15 +168,15 @@ class WizardTestFormData(object):
test(test_object, final_step_response)
-class ManagedModelTestRunner(DjangoTestSuiteRunner):
+class ManagedModelTestRunner(DiscoverRunner):
"""
Test runner that automatically makes all unmanaged models in your Django
project managed for the duration of the test run, so that one doesn't need
to execute the SQL manually to create them.
"""
def setup_test_environment(self, *args, **kwargs):
- from django.db.models.loading import get_models
- self.unmanaged_models = [m for m in get_models()
+ from django.apps import apps
+ self.unmanaged_models = [m for m in apps.get_models()
if not m._meta.managed]
for m in self.unmanaged_models:
m._meta.managed = True
@@ -283,8 +257,8 @@ class WizardTest(object):
next_form_is_checked = len(self.steps) > idx + 1 and \
self.steps[idx + 1][0] not in ignored
try:
- response = self.client.post(url, data,
- follow=not next_form_is_checked)
+ response = self.client.post(
+ url, data, follow=not next_form_is_checked)
except ValidationError as e:
msg = u"Errors: {} on {}. On \"ManagementForm data is " \
u"missing or...\" error verify the wizard_name or " \
@@ -347,8 +321,15 @@ class AccessControlTest(TestCase):
user, created = User.objects.get_or_create(username='myusername')
user.is_superuser = True
user.save()
- ishtar_user = models.IshtarUser.objects.get(username=user.username)
+ ishtar_user = models.IshtarUser.objects.get(
+ user_ptr__username='myusername')
self.assertIn(admin, ishtar_user.person.person_types.all())
+ user = ishtar_user.user_ptr
+ user.is_superuser = False
+ user.save()
+ ishtar_user = models.IshtarUser.objects.get(
+ user_ptr__username='myusername')
+ self.assertNotIn(admin, ishtar_user.person.person_types.all())
class AdminGenTypeTest(TestCase):
@@ -362,11 +343,14 @@ class AdminGenTypeTest(TestCase):
module_name = 'ishtar_common'
def setUp(self):
- password = 'mypassword'
- my_admin = User.objects.create_superuser(
- 'myuser', 'myemail@test.com', password)
+ self.password = 'mypassword'
+ self.username = "myuser"
+ user = User.objects.create_superuser(
+ self.username, 'myemail@test.com', self.password)
+ user.set_password(self.password)
+ user.save()
self.client = Client()
- self.client.login(username=my_admin.username, password=password)
+ self.client.login(username=self.username, password=self.password)
def test_listing_and_detail(self):
for model in self.models:
@@ -742,7 +726,8 @@ class ShortMenuTest(TestCase):
def test_treatment_file(self):
c = Client()
c.login(username=self.username, password=self.password)
- from archaeological_finds.models import TreatmentFile, TreatmentFileType
+ from archaeological_finds.models import TreatmentFile, \
+ TreatmentFileType
tf = TreatmentFile.objects.create(
type=TreatmentFileType.objects.create(),
year=2050
@@ -998,11 +983,12 @@ class IshtarSiteProfileTest(TestCase):
class IshtarBasicTest(TestCase):
def setUp(self):
- password = 'mypassword'
- my_admin = User.objects.create_superuser(
- 'myuser', 'myemail@test.com', password)
+ self.password = 'mypassword'
+ self.my_admin = User.objects.create_superuser(
+ 'myuser', 'myemail@test.com', self.password)
self.client = Client()
- self.client.login(username=my_admin.username, password=password)
+ self.client.login(username=self.my_admin.username,
+ password=self.password)
def test_status(self):
response = self.client.get(reverse('status'))
@@ -1015,6 +1001,34 @@ class IshtarBasicTest(TestCase):
person.save()
self.assertEqual(person.raw_name, "WEASLEY George")
+ def test_show(self):
+ person = models.Person.objects.create(name="Weasley", surname="Bill")
+ orga_type = models.OrganizationType.objects.create(
+ txt_idx='test', label='testy')
+ company = models.Organization.objects.create(
+ history_modifier=self.my_admin, name='Franquin Comp.',
+ organization_type=orga_type)
+ c = Client()
+
+ response = c.get(reverse('show-person', kwargs={'pk': person.pk}))
+ self.assertEqual(response.status_code, 200)
+ # empty content when not allowed
+ self.assertEqual(response.content, "")
+ response = c.get(reverse('show-organization',
+ kwargs={'pk': company.pk}))
+ self.assertEqual(response.status_code, 200)
+ # empty content when not allowed
+ self.assertEqual(response.content, "")
+
+ c.login(username=self.my_admin.username, password=self.password)
+ response = c.get(reverse('show-person', kwargs={'pk': person.pk}))
+ self.assertEqual(response.status_code, 200)
+ self.assertIn('class="sheet"', response.content)
+ response = c.get(reverse('show-organization',
+ kwargs={'pk': company.pk}))
+ self.assertEqual(response.status_code, 200)
+ self.assertIn('class="sheet"', response.content)
+
class GeomaticTest(TestCase):
def test_post_save_point(self):
@@ -1041,3 +1055,44 @@ class GeomaticTest(TestCase):
post_save_point(None, instance=obj)
self.assertIsNotNone(obj.point_2d)
self.assertIsNotNone(obj.point)
+
+
+class AccountWizardTest(WizardTest, TestCase):
+ fixtures = [settings.ROOT_PATH +
+ '../fixtures/initial_data-auth-fr.json',
+ settings.ROOT_PATH +
+ '../ishtar_common/fixtures/initial_data-fr.json',]
+ url_name = 'account_management'
+ wizard_name = 'account_wizard'
+ steps = views.account_wizard_steps
+ form_datas = [
+ WizardTestFormData(
+ "Add an account",
+ form_datas={
+ 'account': {
+ 'username': "My username",
+ 'email': "test@example.com",
+ 'hidden_password': "my_pass",
+ 'hidden_password_confirm': "my_pass",
+ }
+ },
+ ),
+ ]
+
+ def pre_wizard(self):
+ self.person = models.Person.objects.create(
+ name='Boule', surname=' ',
+ )
+ self.form_datas[0].set('selec', 'pk', self.person.pk)
+ self.form_datas[0].set('account', 'pk', self.person.pk)
+
+ self.account_number = models.IshtarUser.objects.count()
+ super(AccountWizardTest, self).pre_wizard()
+
+ def post_wizard(self):
+ person = models.Person.objects.get(pk=self.person.pk)
+ user = person.ishtaruser.user_ptr
+ self.assertEqual(user.username, "My username")
+ self.assertEqual(user.email, "test@example.com")
+ self.assertEqual(models.IshtarUser.objects.count(),
+ self.account_number + 1)