mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-21 21:53:30 +00:00
Make some tests for clubs
This commit is contained in:
parent
6aed36c31f
commit
0dba76e02e
@ -106,7 +106,10 @@ class Membership(models.Model):
|
||||
description = models.CharField(_('description'), max_length=30, null=False, blank=True)
|
||||
|
||||
def clean(self):
|
||||
if Membership.objects.filter(user=self.user).filter(club=self.club).filter(end_date=None).exclude(pk=self.pk).exists():
|
||||
sub = Subscriber.objects.filter(pk=self.user.pk).first()
|
||||
if sub is None or not sub.is_subscribed():
|
||||
raise ValidationError(_('User must be subscriber to take part to a club'))
|
||||
if Membership.objects.filter(user=self.user).filter(club=self.club).filter(end_date=None).exists():
|
||||
raise ValidationError(_('User is already member of that club'))
|
||||
|
||||
def __str__(self):
|
||||
|
@ -1,3 +1,50 @@
|
||||
from django.test import TestCase
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.management import call_command
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
class ClubTest(TestCase):
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
|
||||
def test_create_add_user_to_club_from_root_ok(self):
|
||||
self.client.login(username='root', password='plop')
|
||||
self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 2, "role": 3})
|
||||
response = self.client.get(reverse("club:club_members", kwargs={"club_id":4}))
|
||||
self.assertTrue(response.status_code == 200)
|
||||
self.assertTrue("<li>Woenzel'UT - skia - Responsable info</li>" in str(response.content))
|
||||
|
||||
def test_create_add_user_to_club_from_root_fail_not_subscriber(self):
|
||||
self.client.login(username='root', password='plop')
|
||||
response = self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 3, "role": 3})
|
||||
self.assertTrue(response.status_code == 200)
|
||||
self.assertTrue("User must be subscriber to take part to a club" in str(response.content))
|
||||
response = self.client.get(reverse("club:club_members", kwargs={"club_id":4}))
|
||||
self.assertFalse("<li>Woenzel'UT - guy - Responsable info</li>" in str(response.content))
|
||||
|
||||
def test_create_add_user_to_club_from_root_fail_already_in_club(self):
|
||||
self.client.login(username='root', password='plop')
|
||||
self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 2, "role": 3})
|
||||
response = self.client.get(reverse("club:club_members", kwargs={"club_id":4}))
|
||||
self.assertTrue("<li>Woenzel'UT - skia - Responsable info</li>" in str(response.content))
|
||||
response = self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 2, "role": 4})
|
||||
self.assertTrue(response.status_code == 200)
|
||||
self.assertFalse("<li>Woenzel'UT - skia - Secrétaire</li>" in str(response.content))
|
||||
|
||||
def test_create_add_user_to_club_from_skia_ok(self):
|
||||
self.client.login(username='root', password='plop')
|
||||
self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 2, "role": 10})
|
||||
self.client.login(username='skia', password='plop')
|
||||
self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 4, "role": 9})
|
||||
response = self.client.get(reverse("club:club_members", kwargs={"club_id":4}))
|
||||
self.assertTrue(response.status_code == 200)
|
||||
self.assertTrue("<li>Woenzel'UT - rbatsbak - Vice-Pr" in str(response.content))
|
||||
|
||||
def test_create_add_user_to_club_from_skia_fail(self):
|
||||
self.client.login(username='root', password='plop')
|
||||
self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 2, "role": 3})
|
||||
self.client.login(username='skia', password='plop')
|
||||
response = self.client.post(reverse("club:club_members", kwargs={"club_id":4}), {"user": 4, "role": 10})
|
||||
self.assertTrue(response.status_code == 200)
|
||||
self.assertTrue("<li>You do not have the permission to do that</li>" in str(response.content))
|
||||
|
95
core/management/commands/populate.py
Normal file
95
core/management/commands/populate.py
Normal file
@ -0,0 +1,95 @@
|
||||
import os
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.core.management import call_command
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
from core.models import Group, User, Page, PageRev
|
||||
from accounting.models import Customer, GeneralJournal, ProductType, Product
|
||||
from club.models import Club
|
||||
from subscription.models import Subscription, Subscriber
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Populate a new instance of the Sith AE"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('--prod', action="store_true")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||
u = User(username='root', last_name="", first_name="Bibou",
|
||||
email="ae.info@utbm.fr",
|
||||
date_of_birth="1942-06-12",
|
||||
is_superuser=True, is_staff=True)
|
||||
u.set_password("plop")
|
||||
u.save()
|
||||
for g in settings.AE_GROUPS.values():
|
||||
Group(id=g['id'], name=g['name']).save()
|
||||
ae = Club(name=settings.AE_MAIN_CLUB['name'], unix_name=settings.AE_MAIN_CLUB['unix_name'],
|
||||
address=settings.AE_MAIN_CLUB['address'])
|
||||
ae.save()
|
||||
|
||||
# Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
|
||||
if not options['prod']:
|
||||
print("Dev mode, adding some test data")
|
||||
# Adding user Skia
|
||||
s = User(username='skia', last_name="Kia", first_name="S'",
|
||||
email="skia@git.an",
|
||||
date_of_birth="1942-06-12")
|
||||
s.set_password("plop")
|
||||
s.save()
|
||||
# Adding user Guy
|
||||
u = User(username='guy', last_name="Carlier", first_name="Guy",
|
||||
email="guy@git.an",
|
||||
date_of_birth="1942-06-12",
|
||||
is_superuser=False, is_staff=False)
|
||||
u.set_password("plop")
|
||||
u.save()
|
||||
# Adding user Richard Batsbak
|
||||
r = User(username='rbatsbak', last_name="Batsbak", first_name="Richard",
|
||||
email="richard@git.an",
|
||||
date_of_birth="1982-06-12")
|
||||
r.set_password("plop")
|
||||
r.save()
|
||||
# Adding syntax help page
|
||||
p = Page(name='Aide_sur_la_syntaxe')
|
||||
p.set_lock(s)
|
||||
p.save()
|
||||
PageRev(page=p, title="Aide sur la syntaxe", author=s, content="""
|
||||
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
|
||||
""").save()
|
||||
# Adding README
|
||||
p = Page(name='README')
|
||||
p.set_lock(s)
|
||||
p.save()
|
||||
p.view_groups=[settings.AE_GROUPS['public']['id']]
|
||||
p.set_lock(s)
|
||||
p.save()
|
||||
with open(os.path.join(root_path)+'/README.md', 'r') as rm:
|
||||
PageRev(page=p, title="REAMDE", author=s, content=rm.read()).save()
|
||||
|
||||
# Subscription
|
||||
Subscription(member=Subscriber.objects.filter(pk=s.pk).first(), subscription_type=list(settings.AE_SUBSCRIPTIONS.keys())[0],
|
||||
payment_method=settings.AE_PAYMENT_METHOD[0]).save()
|
||||
Subscription(member=Subscriber.objects.filter(pk=r.pk).first(), subscription_type=list(settings.AE_SUBSCRIPTIONS.keys())[0],
|
||||
payment_method=settings.AE_PAYMENT_METHOD[0]).save()
|
||||
|
||||
# Clubs
|
||||
Club(name="Bibo'UT", unix_name="bibout",
|
||||
address="46 de la Boustifaille", parent=ae).save()
|
||||
guyut = Club(name="Guy'UT", unix_name="guyut",
|
||||
address="42 de la Boustifaille", parent=ae)
|
||||
guyut.save()
|
||||
Club(name="Woenzel'UT", unix_name="woenzel",
|
||||
address="Woenzel", parent=guyut).save()
|
||||
Club(name="BdF", unix_name="bdf",
|
||||
address="Guyéuéyuéyuyé").save()
|
||||
|
||||
# Accounting test values:
|
||||
Customer(user=s, account_id="6568j").save()
|
||||
p = ProductType(name="Bières bouteilles")
|
||||
p.save()
|
||||
Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
|
||||
special_selling_price="1.6").save()
|
||||
GeneralJournal(start_date="2015-06-12", name="A15").save()
|
||||
|
@ -23,71 +23,7 @@ class Command(BaseCommand):
|
||||
except Exception as e:
|
||||
print(e)
|
||||
call_command('migrate')
|
||||
u = User(username='root', last_name="", first_name="Bibou",
|
||||
email="ae.info@utbm.fr",
|
||||
date_of_birth="1942-06-12",
|
||||
is_superuser=True, is_staff=True)
|
||||
u.set_password("plop")
|
||||
u.save()
|
||||
for g in settings.AE_GROUPS.values():
|
||||
Group(id=g['id'], name=g['name']).save()
|
||||
ae = Club(name=settings.AE_MAIN_CLUB['name'], unix_name=settings.AE_MAIN_CLUB['unix_name'],
|
||||
address=settings.AE_MAIN_CLUB['address'])
|
||||
ae.save()
|
||||
|
||||
# Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
|
||||
if not options['prod']:
|
||||
print("Dev mode, adding some test data")
|
||||
# Adding user Skia
|
||||
s = User(username='skia', last_name="Kia", first_name="S'",
|
||||
email="skia@git.an",
|
||||
date_of_birth="1942-06-12")
|
||||
s.set_password("plop")
|
||||
s.save()
|
||||
# Adding user Guy
|
||||
u = User(username='guy', last_name="Carlier", first_name="Guy",
|
||||
email="guy@git.an",
|
||||
date_of_birth="1942-06-12",
|
||||
is_superuser=False, is_staff=False)
|
||||
u.set_password("plop")
|
||||
u.save()
|
||||
# Adding syntax help page
|
||||
p = Page(name='Aide_sur_la_syntaxe')
|
||||
p.set_lock(s)
|
||||
p.save()
|
||||
PageRev(page=p, title="Aide sur la syntaxe", author=s, content="""
|
||||
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
|
||||
""").save()
|
||||
# Adding README
|
||||
p = Page(name='README')
|
||||
p.set_lock(s)
|
||||
p.save()
|
||||
p.view_groups=[settings.AE_GROUPS['public']['id']]
|
||||
p.set_lock(s)
|
||||
p.save()
|
||||
with open(os.path.join(root_path)+'/README.md', 'r') as rm:
|
||||
PageRev(page=p, title="REAMDE", author=s, content=rm.read()).save()
|
||||
|
||||
# Subscription
|
||||
Subscription(member=Subscriber.objects.filter(pk=s.pk).first(), subscription_type=list(settings.AE_SUBSCRIPTIONS.keys())[0],
|
||||
payment_method=settings.AE_PAYMENT_METHOD[0]).save()
|
||||
|
||||
# Clubs
|
||||
Club(name="Bibo'UT", unix_name="bibout",
|
||||
address="46 de la Boustifaille", parent=ae).save()
|
||||
guyut = Club(name="Guy'UT", unix_name="guyut",
|
||||
address="42 de la Boustifaille", parent=ae)
|
||||
guyut.save()
|
||||
Club(name="Woenzel'UT", unix_name="woenzel",
|
||||
address="Woenzel", parent=guyut).save()
|
||||
Club(name="BdF", unix_name="bdf",
|
||||
address="Guyéuéyuéyuyé").save()
|
||||
|
||||
# Accounting test values:
|
||||
Customer(user=s, account_id="6568j").save()
|
||||
p = ProductType(name="Bières bouteilles")
|
||||
p.save()
|
||||
Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
|
||||
special_selling_price="1.6").save()
|
||||
GeneralJournal(start_date="2015-06-12", name="A15").save()
|
||||
|
||||
if options['prod']:
|
||||
call_command('populate', '--prod')
|
||||
else:
|
||||
call_command('populate')
|
||||
|
Loading…
Reference in New Issue
Block a user