|
@@ -1,9 +1,10 @@
|
|
|
# -*- coding: utf-8 -*-
|
|
|
import os
|
|
|
+import datetime
|
|
|
from django import db
|
|
|
from django.test import TestCase, Client
|
|
|
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 ldapdb
|
|
|
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):
|
|
|
"""
|
|
|
- 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.
|
|
|
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):
|
|
|
"""
|
|
|
- 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é
|
|
|
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):
|
|
|
"""
|
|
|
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.
|
|
|
"""
|
|
|
#~ Créé un membre
|
|
@@ -121,7 +122,7 @@ class MemberTests(TestCase):
|
|
|
|
|
|
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
|
|
|
"""
|
|
|
first_name = u'Gérard'
|
|
@@ -142,9 +143,9 @@ class MemberTests(TestCase):
|
|
|
|
|
|
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 :
|
|
|
- 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.
|
|
|
"""
|
|
|
random = os.urandom(4).encode('hex')
|
|
@@ -221,6 +222,71 @@ class MemberTests(TestCase):
|
|
|
member = Member.objects.get(ldap_cn=ldap_cn)
|
|
|
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):
|
|
|
|