mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-22 15:51:19 +00:00
Add unit tests for student cards and fix edge cases
This commit is contained in:
parent
e1ffdbe3f9
commit
5ae7d10e84
@ -48,7 +48,7 @@ from accounting.models import (
|
||||
from core.utils import resize_image
|
||||
from club.models import Club, Membership
|
||||
from subscription.models import Subscription
|
||||
from counter.models import Customer, ProductType, Product, Counter, Selling
|
||||
from counter.models import Customer, ProductType, Product, Counter, Selling, StudentCard
|
||||
from com.models import Sith, Weekmail, News, NewsDate
|
||||
from election.models import Election, Role, Candidature, ElectionList
|
||||
from forum.models import Forum, ForumTopic
|
||||
@ -870,6 +870,7 @@ Welcome to the wiki page!
|
||||
start=s.subscription_start,
|
||||
)
|
||||
s.save()
|
||||
StudentCard(uid="9A89B82018B0A0", customer=sli.customer).save()
|
||||
# Adding subscription for Krophil
|
||||
s = Subscription(
|
||||
member=User.objects.filter(pk=krophil.pk).first(),
|
||||
|
@ -757,7 +757,7 @@ class StudentCard(models.Model):
|
||||
def can_create(customer, user):
|
||||
return user.pk == customer.user.pk or user.is_board_member or user.is_root
|
||||
|
||||
def can_edit(self, obj):
|
||||
def can_be_edited_by(self, obj):
|
||||
if isinstance(obj, User):
|
||||
return StudentCard.can_create(self.customer, obj)
|
||||
return False
|
||||
|
192
counter/tests.py
192
counter/tests.py
@ -142,3 +142,195 @@ class BarmanConnectionTest(TestCase):
|
||||
self.assertFalse(
|
||||
'<li><a href="/user/1/">S' Kia</a></li>' in str(response_get.content)
|
||||
)
|
||||
|
||||
|
||||
class StudentCardTest(TestCase):
|
||||
"""
|
||||
Tests for adding and deleting Stundent Cards
|
||||
Test that an user can be found with it's student card
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
self.krophil = User.objects.get(username="krophil")
|
||||
self.sli = User.objects.get(username="sli")
|
||||
|
||||
self.counter = Counter.objects.filter(id=2).first()
|
||||
|
||||
# Auto login on counter
|
||||
self.client.post(
|
||||
reverse("counter:login", args=[self.counter.id]),
|
||||
{"username": "krophil", "password": "plop"},
|
||||
)
|
||||
|
||||
def test_search_user_with_student_card(self):
|
||||
response = self.client.post(
|
||||
reverse("counter:details", args=[self.counter.id]),
|
||||
{"code": "9A89B82018B0A0"},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
response.url,
|
||||
reverse(
|
||||
"counter:click",
|
||||
kwargs={"counter_id": self.counter.id, "user_id": self.sli.id},
|
||||
),
|
||||
)
|
||||
|
||||
def test_add_student_card_from_counter(self):
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:click",
|
||||
kwargs={"counter_id": self.counter.id, "user_id": self.sli.id},
|
||||
),
|
||||
{"student_card_uid": "8B90734A802A8F", "action": "add_student_card"},
|
||||
)
|
||||
self.assertContains(response, text="8B90734A802A8F")
|
||||
|
||||
def test_add_student_card_from_counter_fail(self):
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:click",
|
||||
kwargs={"counter_id": self.counter.id, "user_id": self.sli.id},
|
||||
),
|
||||
{"student_card_uid": "8B90734A802A8", "action": "add_student_card"},
|
||||
)
|
||||
self.assertContains(
|
||||
response, text="Ce n'est pas un UID de carte étudiante valide"
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:click",
|
||||
kwargs={"counter_id": self.counter.id, "user_id": self.sli.id},
|
||||
),
|
||||
{"student_card_uid": "8B90734A802A8FA", "action": "add_student_card"},
|
||||
)
|
||||
self.assertContains(
|
||||
response, text="Ce n'est pas un UID de carte étudiante valide"
|
||||
)
|
||||
|
||||
def test_delete_student_card_with_owner(self):
|
||||
self.client.login(username="sli", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"counter:delete_student_card",
|
||||
kwargs={
|
||||
"customer_id": self.sli.customer.pk,
|
||||
"card_id": self.sli.customer.student_cards.first().id,
|
||||
},
|
||||
)
|
||||
)
|
||||
self.assertFalse(self.sli.customer.student_cards.exists())
|
||||
|
||||
def test_delete_student_card_with_board_member(self):
|
||||
self.client.login(username="skia", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"counter:delete_student_card",
|
||||
kwargs={
|
||||
"customer_id": self.sli.customer.pk,
|
||||
"card_id": self.sli.customer.student_cards.first().id,
|
||||
},
|
||||
)
|
||||
)
|
||||
self.assertFalse(self.sli.customer.student_cards.exists())
|
||||
|
||||
def test_delete_student_card_with_root(self):
|
||||
self.client.login(username="root", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"counter:delete_student_card",
|
||||
kwargs={
|
||||
"customer_id": self.sli.customer.pk,
|
||||
"card_id": self.sli.customer.student_cards.first().id,
|
||||
},
|
||||
)
|
||||
)
|
||||
self.assertFalse(self.sli.customer.student_cards.exists())
|
||||
|
||||
def test_delete_student_card_fail(self):
|
||||
self.client.login(username="krophil", password="plop")
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:delete_student_card",
|
||||
kwargs={
|
||||
"customer_id": self.sli.customer.pk,
|
||||
"card_id": self.sli.customer.student_cards.first().id,
|
||||
},
|
||||
)
|
||||
)
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertTrue(self.sli.customer.student_cards.exists())
|
||||
|
||||
def test_add_student_card_from_user_preferences(self):
|
||||
# Test with owner of the card
|
||||
self.client.login(username="sli", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"counter:add_student_card", kwargs={"customer_id": self.sli.customer.pk}
|
||||
),
|
||||
{"uid": "8B90734A802A8F"},
|
||||
)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("core:user_prefs", kwargs={"user_id": self.sli.id})
|
||||
)
|
||||
self.assertContains(response, text="8B90734A802A8F")
|
||||
|
||||
# Test with board member
|
||||
self.client.login(username="skia", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"counter:add_student_card", kwargs={"customer_id": self.sli.customer.pk}
|
||||
),
|
||||
{"uid": "8B90734A802A8A"},
|
||||
)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("core:user_prefs", kwargs={"user_id": self.sli.id})
|
||||
)
|
||||
self.assertContains(response, text="8B90734A802A8A")
|
||||
|
||||
# Test with root
|
||||
self.client.login(username="root", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"counter:add_student_card", kwargs={"customer_id": self.sli.customer.pk}
|
||||
),
|
||||
{"uid": "8B90734A802A8B"},
|
||||
)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("core:user_prefs", kwargs={"user_id": self.sli.id})
|
||||
)
|
||||
self.assertContains(response, text="8B90734A802A8B")
|
||||
|
||||
def test_add_student_card_from_user_preferences_fail(self):
|
||||
self.client.login(username="sli", password="plop")
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:add_student_card", kwargs={"customer_id": self.sli.customer.pk}
|
||||
),
|
||||
{"uid": "8B90734A802A8"},
|
||||
)
|
||||
|
||||
self.assertContains(response, text="Cet UID est invalide")
|
||||
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:add_student_card", kwargs={"customer_id": self.sli.customer.pk}
|
||||
),
|
||||
{"uid": "8B90734A802A8FA"},
|
||||
)
|
||||
self.assertContains(response, text="Cet UID est invalide")
|
||||
|
||||
# Test with unauthorized user
|
||||
self.client.login(username="krophil", password="plop")
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"counter:add_student_card", kwargs={"customer_id": self.sli.customer.pk}
|
||||
),
|
||||
{"uid": "8B90734A802A8F"},
|
||||
)
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
@ -113,8 +113,8 @@ class StudentCardForm(forms.ModelForm):
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super(StudentCardForm, self).clean()
|
||||
uid = cleaned_data.get("uid")
|
||||
if not StudentCard.is_valid(uid):
|
||||
uid = cleaned_data.get("uid", None)
|
||||
if not uid or not StudentCard.is_valid(uid):
|
||||
raise forms.ValidationError(_("This uid is invalid"), code="invalid")
|
||||
return cleaned_data
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user