summaryrefslogtreecommitdiff
path: root/archaeological_operations/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/tests.py')
-rw-r--r--archaeological_operations/tests.py162
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)