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) | 
