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