diff options
Diffstat (limited to 'archaeological_operations/tests.py')
-rw-r--r-- | archaeological_operations/tests.py | 162 |
1 files changed, 141 insertions, 21 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 578382ccd..a7ca114f0 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2012-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2012-2016 É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 @@ -29,13 +29,16 @@ from django.core.urlresolvers import reverse from django.test import TestCase from django.test.client import Client -from django.contrib.auth.models import User, Permission +from django.contrib.auth.models import Permission import models +from archaeological_operations import views + from ishtar_common.models import OrganizationType, Organization, \ - ImporterType, IshtarUser, TargetKey + ImporterType, IshtarUser, TargetKey, IshtarSiteProfile from ishtar_common import forms_common +from ishtar_common.tests import WizardTest, create_superuser, create_user class ImportOperationTest(TestCase): @@ -416,23 +419,6 @@ class ImportOperationTest(TestCase): "recognized in \"%s\"" % (str(not_imported), value)) -def create_superuser(): - username = 'username4277' - password = 'dcbqj756456!@%' - user = User.objects.create_superuser(username, "nomail@nomail.com", - password) - return username, password, user - - -def create_user(): - username = 'username678' - password = 'dcbqj756456!@%' - user = User.objects.create_user(username, email="nomail2@nomail.com") - user.set_password(password) - user.save() - return username, password, user - - def create_orga(user): orga_type, created = OrganizationType.objects.get_or_create( txt_idx='operator') @@ -441,9 +427,10 @@ def create_orga(user): return orga -def create_operation(user, orga=None): +def create_operation(user, orga=None, values={}): dct = {'year': 2010, 'operation_type_id': 1, 'history_modifier': user} + dct.update(values) if orga: dct['operator'] = orga operation = models.Operation.objects.create(**dct) @@ -511,6 +498,28 @@ class OperationInitTest(object): def get_default_operation(self): return self.create_operation()[0] + def tearDown(self): + # cleanup for further test + if hasattr(self, 'user'): + self.user.delete() + self.user = None + # all try/except is necessary for bad migrations on master... + # should be removed at the next big version + if hasattr(self, 'operations'): + for ope in self.operations: + try: + ope.delete() + except: + pass + self.operations = [] + if hasattr(self, 'parcels'): + for p in self.parcels: + try: + p.delete() + except: + pass + self.parcels = [] + class OperationTest(TestCase, OperationInitTest): fixtures = [settings.ROOT_PATH + @@ -523,6 +532,7 @@ class OperationTest(TestCase, OperationInitTest): '../archaeological_operations/fixtures/initial_data-fr.json'] def setUp(self): + IshtarSiteProfile.objects.create() self.username, self.password, self.user = create_superuser() self.alt_username, self.alt_password, self.alt_user = create_user() self.alt_user.user_permissions.add(Permission.objects.get( @@ -532,6 +542,26 @@ class OperationTest(TestCase, OperationInitTest): self.operations += self.create_operation(self.alt_user, self.orgas[0]) self.item = self.operations[0] + def testExternalID(self): + self.item.code_patriarche = '123456789' + self.item.save() + parcel = self.get_default_parcel() + parcel.operation = self.item + parcel.save() + correct_ext_id = u"{}-{}-{}{}".format( + self.item.code_patriarche, parcel.town.numero_insee, + parcel.section, parcel.parcel_number) + self.assertEqual(parcel.external_id, correct_ext_id) + # auto has been previously set + parcel.external_id = 'blabla' + parcel.save() + self.assertEqual(parcel.external_id, correct_ext_id) + # deactivate auto + parcel.auto_external_id = False + parcel.external_id = 'blabla' + parcel.save() + self.assertEqual(parcel.external_id, 'blabla') + def testSearch(self): c = Client() response = c.get(reverse('get-operation'), {'year': '2010'}) @@ -578,6 +608,16 @@ class OperationTest(TestCase, OperationInitTest): {'operator': self.orgas[0].pk}) self.assertTrue(json.loads(response.content)['total'] == 1) + def testIndex(self): + ope = create_operation(self.user, values={'year': 2042}) + self.assertEqual(ope.operation_code, 1) + ope2 = create_operation(self.user, values={'year': 2042}) + self.assertEqual(ope2.operation_code, 2) + ope = create_operation(self.user, values={'year': 0}) + self.assertEqual(ope.operation_code, 1) + ope2 = create_operation(self.user, values={'year': 0}) + self.assertEqual(ope2.operation_code, 2) + def create_administrativact(user, operation): act_type, created = models.ActType.objects.get_or_create( @@ -615,3 +655,83 @@ class RegisterTest(TestCase, OperationInitTest): self.assertTrue(json.loads(response.content)['total'] == 1) response = c.get(reverse('get-administrativeact'), {'indexed': '2'}) self.assertTrue(json.loads(response.content)['total'] == 1) + + +class OperationWizardCreationTest(WizardTest, OperationInitTest, TestCase): + fixtures = [settings.ROOT_PATH + + '../fixtures/initial_data-auth-fr.json', + settings.ROOT_PATH + + '../ishtar_common/fixtures/initial_data-fr.json', + settings.ROOT_PATH + + '../archaeological_files/fixtures/initial_data.json', + settings.ROOT_PATH + + '../archaeological_operations/fixtures/initial_data-fr.json'] + url_name = 'operation_creation' + wizard_name = 'operation_wizard' + steps = views.wizard_steps + form_datas = [( + # data + { + 'general-operation_creation': { + 'operation_type': 1, # preventive diag + 'year': 2016} + }, + # ignored + ('filechoice-operation_creation', + 'preventive-operation_creation', + 'towns-operation_creation', + 'parcels-operation_creation', + ) + )] + + def pre_wizard(self): + self.operation_number = models.Operation.objects.count() + super(OperationWizardCreationTest, self).pre_wizard() + + def post_wizard(self): + self.assertEqual(models.Operation.objects.count(), + self.operation_number + 1) + + +class OperationAdminActWizardCreationTest(WizardTest, OperationInitTest, + TestCase): + fixtures = [settings.ROOT_PATH + + '../fixtures/initial_data-auth-fr.json', + settings.ROOT_PATH + + '../ishtar_common/fixtures/initial_data-fr.json', + settings.ROOT_PATH + + '../archaeological_files/fixtures/initial_data.json', + settings.ROOT_PATH + + '../archaeological_operations/fixtures/initial_data-fr.json'] + url_name = 'operation_administrativeactop' + wizard_name = 'operation_administrative_act_wizard' + steps = views.administrativeactop_steps + form_datas = [[ + # data + { + 'selec-operation_administrativeactop': { + }, + 'administrativeact-operation_administrativeactop': { + 'signature_date': str(datetime.date.today()) + } + }, + # ignored + [] + ]] + + def pre_wizard(self): + ope = self.get_default_operation() + + self.number = models.AdministrativeAct.objects.count() + + data = self.form_datas[0][0] + data['selec-operation_administrativeactop']['pk'] = ope.pk + act = models.ActType.objects.filter(intented_to='O').all()[0].pk + + data['administrativeact-operation_administrativeactop'][ + 'act_type'] = act + super(OperationAdminActWizardCreationTest, self).pre_wizard() + + def post_wizard(self): + self.assertEqual(models.AdministrativeAct.objects.count(), + self.number + 1) |