test form
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 26 Jul 2012 16:59:49 +0000 (12:59 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 26 Jul 2012 16:59:49 +0000 (12:59 -0400)
project/dae/models.py
project/dae/test/poste.py
project/rh/test/common.py

index a87236f..29a87a1 100644 (file)
@@ -359,11 +359,14 @@ class Poste(PosteWorkflow, rh.Poste_):
         Cette fonction est consommatrice SQL car elle cherche les dossiers
         qui ont été liés à celui-ci.
         """
-        data = (
-            self.implantation,
-            self.type_poste.nom,
-            self.nom,
-        )
+        try:
+            data = (
+                self.implantation,
+                self.type_poste.nom,
+                self.nom,
+            )
+        except:
+            return self.nom
         return u'%s - %s (%s)' % data
 
 reversion.register(Poste, format='xml', follow=[
index 0acb336..bd38ec1 100644 (file)
@@ -1,7 +1,89 @@
 # -*- coding: utf-8 -*-
 
+from decimal import Decimal
 from django.core.urlresolvers import reverse
+from django.contrib.auth.models import User
+from project.dae import models as dae
 from project.dae.test.common import DaeTest
+from project.dae.forms import PosteForm
+
+class PosteFormTest(DaeTest):
+    """
+    Test le le formulaire de poste
+    """
+    def test_add(self):
+        """
+        Test PosteForm sans instance
+        """
+
+        class Request:
+            user = None
+
+        request = Request()
+        request.user = User.objects.get(email='0@test.auf')
+        post = {
+                'nom' : 'nom',
+                'regime_travail_nb_heure_semaine' : '35',
+                'indemn_expat_min' : '110',
+                'indemn_expat_max' : '210',
+                'type_intervention': dae.POSTE_ACTION[0][0],
+                'service' : self.srv_info.id,
+                'implantation' : self.IMPLANTATION_ACGL_CNF_NGAOUNDERE.id,
+                'indemn_fct_min' : '120',
+                'indemn_fct_max' : '220',
+                'appel' : dae.POSTE_APPEL_CHOICES[0][0],
+                'regime_travail': '100',
+                'type_poste': self.type_poste_tech.id,
+                'responsable' : self.poste_cnf_ngaoundere.id,
+                'devise_min' : self.devise_cad.id,
+                'devise_max' : self.devise_cad.id,
+                'classement_min' : self.classement_p_5_0.id,
+                'classement_max' : self.classement_p_5_10.id,
+                'valeur_point_min' : self.vp_cad_ngaoundere_2012.id,
+                'valeur_point_max' : self.vp_cad_ngaoundere_2012.id,
+                'salaire_min' : '130',
+                'salaire_max' : '230',
+                'autre_min' : '150',
+                'autre_max' : '250',
+                'charges_patronales_min' : '160',
+                'charges_patronales_max' : '260',
+                }
+        expect = {
+                'nom' : 'nom',
+                'regime_travail_nb_heure_semaine' : Decimal('35'),
+                'indemn_expat_min' : Decimal('110'),
+                'indemn_expat_max' : Decimal('210'),
+                'type_intervention': dae.POSTE_ACTION[0][0],
+                'service' : self.srv_info,
+                'implantation' : self.IMPLANTATION_ACGL_CNF_NGAOUNDERE,
+                'indemn_fct_min' : Decimal('120'),
+                'indemn_fct_max' : Decimal('220'),
+                'appel' : dae.POSTE_APPEL_CHOICES[0][0],
+                'regime_travail': Decimal('100'),
+                'type_poste': self.type_poste_tech,
+                'responsable' : self.poste_cnf_ngaoundere,
+                'devise_min' : self.devise_cad,
+                'devise_max' : self.devise_cad,
+                'classement_min' : self.classement_p_5_0,
+                'classement_max' : self.classement_p_5_10,
+                'valeur_point_min' : self.vp_cad_ngaoundere_2012,
+                'valeur_point_max' : self.vp_cad_ngaoundere_2012,
+                'salaire_min' : Decimal('130'),
+                'salaire_max' : Decimal('230'),
+                'autre_min' : Decimal('150'),
+                'autre_max' : Decimal('250'),
+                'charges_patronales_min' : Decimal('160'),
+                'charges_patronales_max' : Decimal('260'),
+                }
+        form = PosteForm(post, request=request)
+        form.is_valid()
+        self.assertTrue(form.is_valid())
+
+        form.save()
+
+        poste = dae.Poste.objects.get(nom=post['nom'])
+        for k, expect_value in expect.items():
+            self.assertEqual(getattr(poste, k), expect_value)
 
 class PosteAddFromRHTest(DaeTest):
     """
index a297716..5a23741 100644 (file)
@@ -11,6 +11,35 @@ class RhTest(TestCase):
 
     def setUp(self):
         """
+        DEVISES
+        =======
+        self.devise_cad
+
+        CLASSEMENTS
+        ===========
+        self.classement_p_5_0
+        self.classement_p_5_10
+
+        VALEUR POINTS
+        =============
+        self.vp_cad_scm_2012
+
+        SERVICES
+        ========
+        self.srv_info
+
+        CATEGORIE EMPLOI
+        ================
+        self.cat_emploi_pro
+
+        FAMILLE PROFESSIONNELLE
+        =======================
+        self.famille_cadre
+
+        TYPE POSTES
+        ===========
+        self.type_poste_tech
+
         GROUPES
         =======
         self.grp_correspondants_rh
@@ -50,6 +79,50 @@ class RhTest(TestCase):
 
 
         """
+        #########
+        # DEVISES
+        #########
+        self.devise_cad = rh.Devise(code="CAD", nom="CAD")
+        self.devise_cad.save()
+
+        #############
+        # CLASSEMENTS
+        #############
+        self.classement_p_5_0 = rh.Classement(type="P", echelon=5, degre=1, coefficient=5.01)
+        self.classement_p_5_0.save()
+
+        self.classement_p_5_10 = rh.Classement(type="P", echelon=5, degre=10, coefficient=5.10)
+        self.classement_p_5_10.save()
+
+        ##########
+        # SERVICES
+        ##########
+        self.srv_info = rh.Service(nom="info")
+        self.srv_info.save()
+
+        ###################
+        # CATEGORIES EMPLOI
+        ###################
+        self.cat_emploi_pro = rh.CategorieEmploi(nom="pro")
+        self.cat_emploi_pro.save()
+
+        #################
+        # FAMILLES EMPLOI
+        #################
+        self.famille_cadre = rh.FamilleProfessionnelle(nom="cadre")
+        self.famille_cadre.save()
+
+        #############
+        # TYPES POSTE
+        #############
+        self.type_poste_tech = rh.TypePoste(nom="tech",
+                categorie_emploi=self.cat_emploi_pro,
+                famille_professionnelle=self.famille_cadre)
+        self.type_poste_tech.save()
+
+        #########
+        # GROUPES
+        #########
         self.grp_correspondants_rh = Group(name=groups.CORRESPONDANT_RH)
         self.grp_correspondants_rh.save()
 
@@ -92,6 +165,16 @@ class RhTest(TestCase):
         self.IMPLANTATION_BAP_BUREAU = ref.Implantation.objects.get(id=51)
         self.IMPLANTATION_BAP_IFI = ref.Implantation.objects.get(id=55)
 
+        #############
+        #VALEUR POINT
+        #############
+        self.vp_cad_ngaoundere_2012 = rh.ValeurPoint(valeur=1000.1,
+                devise=self.devise_cad,
+                implantation=self.IMPLANTATION_ACGL_CNF_NGAOUNDERE,
+                annee=2012)
+        self.vp_cad_ngaoundere_2012.save()
+
+
 
         ##########
         # Employés