Browse Source

Test member end_date_of_membership and is_paid_up

Fabs 11 years ago
parent
commit
fa4d1d4315
2 changed files with 74 additions and 9 deletions
  1. 0 1
      coin/members/models.py
  2. 74 8
      coin/members/tests.py

+ 0 - 1
coin/members/models.py

@@ -84,7 +84,6 @@ class Member(CoinLdapSyncModel):
         """
         """
         True si le membre est à jour de cotisation. False sinon
         True si le membre est à jour de cotisation. False sinon
         """
         """
-        print self.end_date_of_membership()
         if (self.end_date_of_membership()
         if (self.end_date_of_membership()
             and self.end_date_of_membership() >= datetime.date.today()):
             and self.end_date_of_membership() >= datetime.date.today()):
                 return True
                 return True

+ 74 - 8
coin/members/tests.py

@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 import os
 import os
+import datetime
 from django import db
 from django import db
 from django.test import TestCase, Client
 from django.test import TestCase, Client
 from django.contrib.auth.models import User
 from django.contrib.auth.models import User
-from coin.members.models import Member, LdapUser, LdapGroup
+from coin.members.models import Member, MembershipFee, LdapUser, LdapGroup
 import logging
 import logging
 import ldapdb
 import ldapdb
 from pprint import pprint
 from pprint import pprint
@@ -13,8 +14,8 @@ class MemberTests(TestCase):
 
 
     def test_when_creating_member_a_ldapuser_is_also_created_with_same_data(self):
     def test_when_creating_member_a_ldapuser_is_also_created_with_same_data(self):
         """
         """
-        Test que lors de la création d'un nouveau membre, une entrée 
-        correspondante est bien créée dans le LDAP et qu'elle contient 
+        Test que lors de la création d'un nouveau membre, une entrée
+        correspondante est bien créée dans le LDAP et qu'elle contient
         les mêmes données.
         les mêmes données.
         Cela concerne le nom et le prénom
         Cela concerne le nom et le prénom
         """
         """
@@ -40,7 +41,7 @@ class MemberTests(TestCase):
 
 
     def test_when_modifiying_member_corresponding_ldap_user_is_also_modified_with_same_data(self):
     def test_when_modifiying_member_corresponding_ldap_user_is_also_modified_with_same_data(self):
         """
         """
-        Test que lorsque l'on modifie un membre, l'utilisateur LDAP 
+        Test que lorsque l'on modifie un membre, l'utilisateur LDAP
         correspondant est bien modifié
         correspondant est bien modifié
         Cela concerne le no met le prénom
         Cela concerne le no met le prénom
         """
         """
@@ -71,7 +72,7 @@ class MemberTests(TestCase):
     def test_when_creating_member_corresponding_ldap_user_is_in_coin_ldap_group(self):
     def test_when_creating_member_corresponding_ldap_user_is_in_coin_ldap_group(self):
         """
         """
         Test que l'utilisateur Ldap fraichement créé est bien dans le group "coin"
         Test que l'utilisateur Ldap fraichement créé est bien dans le group "coin"
-        Et que lors de la supression d'un membre, l'utilisateur LDAP correspondant 
+        Et que lors de la supression d'un membre, l'utilisateur LDAP correspondant
         est bien retiré du groupe.
         est bien retiré du groupe.
         """
         """
         #~ Créé un membre
         #~ Créé un membre
@@ -121,7 +122,7 @@ class MemberTests(TestCase):
 
 
     def test_when_creating_member_ldap_display_name_is_well_defined(self):
     def test_when_creating_member_ldap_display_name_is_well_defined(self):
         """
         """
-        Lors de la création d'un membre, le champ "display_name" du LDAP est 
+        Lors de la création d'un membre, le champ "display_name" du LDAP est
         prenom + nom
         prenom + nom
         """
         """
         first_name = u'Gérard'
         first_name = u'Gérard'
@@ -142,9 +143,9 @@ class MemberTests(TestCase):
 
 
     def test_when_creating_member_ldap_cn_is_well_defined(self):
     def test_when_creating_member_ldap_cn_is_well_defined(self):
         """
         """
-        Lors de la création d'un membre, le champ "ldap_cn", s'il n'est pas 
+        Lors de la création d'un membre, le champ "ldap_cn", s'il n'est pas
         définit doit être généré avec les contraintes suivantes :
         définit doit être généré avec les contraintes suivantes :
-        premières lettres du prénom + nom le tout en minuscule, 
+        premières lettres du prénom + nom le tout en minuscule,
         sans caractères accentués et sans espaces.
         sans caractères accentués et sans espaces.
         """
         """
         random = os.urandom(4).encode('hex')
         random = os.urandom(4).encode('hex')
@@ -221,6 +222,71 @@ class MemberTests(TestCase):
         member = Member.objects.get(ldap_cn=ldap_cn)
         member = Member.objects.get(ldap_cn=ldap_cn)
         self.assertIsNotNone(member.user)
         self.assertIsNotNone(member.user)
 
 
+        LdapUser.objects.get(pk=member.ldap_cn).delete()
+
+    def test_member_end_date_of_memberhip(self):
+        """
+        Test que end_date_of_membership d'un membre envoi bien la date de fin d'adhésion
+        """
+        #Créer un membre
+        first_name = u'Tin'
+        last_name = u'Tin'
+        ldap_cn = MemberTestsUtils.get_random_ldap_cn()
+        member = Member(first_name=first_name,
+                        last_name=last_name, ldap_cn=ldap_cn)
+        member.save()
+
+        start_date = datetime.date.today()
+        end_date = start_date + datetime.timedelta(365)
+
+        #Créé une cotisation
+        membershipfee = MembershipFee(member=member, amount=20,
+            start_date=start_date,
+            end_date=end_date)
+        membershipfee.save()
+
+        self.assertEqual(member.end_date_of_membership(), end_date)
+
+        LdapUser.objects.get(pk=member.ldap_cn).delete()
+
+    def test_member_is_paid_up(self):
+        """
+        Test que end_date_of_membership d'un membre envoi bien la date de fin d'adhésion
+        """
+        #Créé un membre
+        first_name = u'Capitain'
+        last_name = u'Haddock'
+        ldap_cn = MemberTestsUtils.get_random_ldap_cn()
+        member = Member(first_name=first_name,
+                        last_name=last_name, ldap_cn=ldap_cn)
+        member.save()
+
+        start_date = datetime.date.today()
+        end_date = start_date + datetime.timedelta(365)
+
+        # Test qu'un membre sans cotisation n'est pas à jour
+        self.assertEqual(member.is_paid_up(), False)
+
+        #Créé une cotisation passée
+        membershipfee = MembershipFee(member=member, amount=20,
+            start_date=datetime.date.today() - datetime.timedelta(365),
+            end_date=datetime.date.today() - datetime.timedelta(10))
+        membershipfee.save()
+        # La cotisation s'étant terminée il y a 10 jours, il ne devrait pas
+        # être à jour de cotistion
+        self.assertEqual(member.is_paid_up(), False)
+
+        #Créé une cotisation actuelle
+        membershipfee = MembershipFee(member=member, amount=20,
+            start_date=datetime.date.today() - datetime.timedelta(10),
+            end_date=datetime.date.today() + datetime.timedelta(10))
+        membershipfee.save()
+        # La cotisation se terminant dans 10 jour, il devrait être à jour
+        # de cotisation
+        self.assertEqual(member.is_paid_up(), True)
+
+        LdapUser.objects.get(pk=member.ldap_cn).delete()
+
 
 
 class MemberAdminTests(TestCase):
 class MemberAdminTests(TestCase):