mirror of
https://github.com/ae-utbm/sith.git
synced 2026-06-28 02:38:44 +00:00
ajout des tests
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
from datetime import date
|
||||
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
from model_bakery import baker
|
||||
|
||||
from club.models import Club, ClubRole, Membership
|
||||
from core.baker_recipes import subscriber_user
|
||||
from core.models import User
|
||||
|
||||
|
||||
class TestMembershipAPI(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.user = baker.make(User)
|
||||
perm = Permission.objects.get(codename="view_club")
|
||||
cls.user.user_permissions.add(perm)
|
||||
cls.clubs = baker.make(Club, _quantity=3, is_active=True)
|
||||
cls.roles = baker.make(ClubRole, _quantity=3, is_active=True)
|
||||
|
||||
# Clean existing data to avoid side effects
|
||||
Membership.objects.all().delete()
|
||||
|
||||
cls.memberships = [
|
||||
# on going
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[0],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[0],
|
||||
start_date=date(2025, 1, 1),
|
||||
end_date=None,
|
||||
),
|
||||
# on going
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[1],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[1],
|
||||
start_date=date(2026, 5, 1),
|
||||
end_date=None,
|
||||
),
|
||||
# former
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[1],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[2],
|
||||
start_date=date(2024, 6, 1),
|
||||
end_date=date(2025, 8, 1),
|
||||
),
|
||||
# on going
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[2],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[0],
|
||||
start_date=date(2024, 1, 1),
|
||||
end_date=None,
|
||||
),
|
||||
# former
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[1],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[2],
|
||||
start_date=date(2025, 6, 1),
|
||||
end_date=date(2025, 8, 1),
|
||||
),
|
||||
# on going
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[2],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[0],
|
||||
start_date=date(2026, 6, 6),
|
||||
end_date=None,
|
||||
),
|
||||
# former
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[0],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[0],
|
||||
start_date=date(2020, 1, 1),
|
||||
end_date=date(2025, 6, 8),
|
||||
),
|
||||
# former
|
||||
Membership.objects.create(
|
||||
club=cls.clubs[2],
|
||||
user=subscriber_user.make(),
|
||||
role=cls.roles[0],
|
||||
start_date=date(2020, 1, 1),
|
||||
end_date=date(2025, 6, 8),
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
class TestNewMembershipAPI(TestMembershipAPI):
|
||||
def test_new_membership_one_club(self):
|
||||
assert self.user.has_perm("club.view_club")
|
||||
self.client.force_login(self.user)
|
||||
since_date = date(2025, 1, 1)
|
||||
arg = {"since_date": since_date, "clubs_id": self.clubs[0].id}
|
||||
url = reverse("api:get_new_clubs_members_since_date")
|
||||
response = self.client.get(url, arg)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
|
||||
membership_ids = [e["id"] for e in data]
|
||||
expected_ids = [self.memberships[0].id]
|
||||
assert membership_ids == expected_ids
|
||||
|
||||
def test_new_membership_multiple_club(self):
|
||||
assert self.user.has_perm("club.view_club")
|
||||
self.client.force_login(self.user)
|
||||
since_date = date(2025, 1, 1)
|
||||
arg = {
|
||||
"since_date": since_date,
|
||||
"clubs_id": [self.clubs[0].id, self.clubs[1].id],
|
||||
}
|
||||
url = reverse("api:get_new_clubs_members_since_date")
|
||||
response = self.client.get(url, arg)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
|
||||
membership_ids = [e["id"] for e in data]
|
||||
expected_ids = [self.memberships[0].id, self.memberships[1].id]
|
||||
assert membership_ids == expected_ids
|
||||
|
||||
def test_new_membership_all_clubs(self):
|
||||
assert self.user.has_perm("club.view_club")
|
||||
self.client.force_login(self.user)
|
||||
since_date = date(2025, 1, 1)
|
||||
arg = {"since_date": since_date}
|
||||
url = reverse("api:get_new_clubs_members_since_date")
|
||||
response = self.client.get(url, arg)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
|
||||
membership_ids = [e["id"] for e in data]
|
||||
expected_ids = [
|
||||
self.memberships[0].id,
|
||||
self.memberships[1].id,
|
||||
self.memberships[5].id,
|
||||
]
|
||||
assert membership_ids == expected_ids
|
||||
|
||||
|
||||
class TestFormerMembershipAPI(TestMembershipAPI):
|
||||
def test_former_membership_one_club(self):
|
||||
assert self.user.has_perm("club.view_club")
|
||||
self.client.force_login(self.user)
|
||||
since_date = date(2025, 1, 1)
|
||||
arg = {"since_date": since_date, "clubs_id": self.clubs[1].id}
|
||||
url = reverse("api:get_former_clubs_members_since_date")
|
||||
response = self.client.get(url, arg)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
|
||||
membership_ids = [e["id"] for e in data]
|
||||
expected_ids = [self.memberships[2].id]
|
||||
assert membership_ids == expected_ids
|
||||
|
||||
def test_new_membership_multiple_club(self):
|
||||
assert self.user.has_perm("club.view_club")
|
||||
self.client.force_login(self.user)
|
||||
since_date = date(2025, 1, 1)
|
||||
arg = {
|
||||
"since_date": since_date,
|
||||
"clubs_id": [self.clubs[1].id, self.clubs[0].id],
|
||||
}
|
||||
url = reverse("api:get_former_clubs_members_since_date")
|
||||
response = self.client.get(url, arg)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
|
||||
membership_ids = [e["id"] for e in data]
|
||||
expected_ids = [self.memberships[6].id, self.memberships[2].id]
|
||||
assert membership_ids == expected_ids
|
||||
|
||||
def test_new_membership_all_clubs(self):
|
||||
assert self.user.has_perm("club.view_club")
|
||||
self.client.force_login(self.user)
|
||||
since_date = date(2025, 1, 1)
|
||||
arg = {"since_date": since_date}
|
||||
url = reverse("api:get_former_clubs_members_since_date")
|
||||
response = self.client.get(url, arg)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
|
||||
membership_ids = [e["id"] for e in data]
|
||||
expected_ids = [
|
||||
self.memberships[6].id,
|
||||
self.memberships[7].id,
|
||||
self.memberships[2].id,
|
||||
]
|
||||
assert membership_ids == expected_ids
|
||||
Reference in New Issue
Block a user