mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 14:13:21 +00:00
pedagogy: fix some previous tests never launched and test for display/create/delete of UVComment
This commit is contained in:
parent
5003e57338
commit
8512f3c5d0
@ -158,6 +158,9 @@ class UVComment(models.Model):
|
||||
"""
|
||||
return self.author == user or user.is_owner(self.uv)
|
||||
|
||||
def __str__(self):
|
||||
return "%s - %s" % (self.uv, self.author)
|
||||
|
||||
author = models.ForeignKey(
|
||||
User,
|
||||
related_name="uv_comments",
|
||||
|
@ -20,6 +20,7 @@
|
||||
<p>{{ comment.grade_teaching }}</p>
|
||||
<p>{{ comment.grade_work_load }}</p>
|
||||
<p>{{ comment.comment }}</p>
|
||||
<p>{% trans %}Published: {% endtrans %}{{ comment.publish_date }}</p>
|
||||
{% if user.is_owner(comment) %}
|
||||
<p><a href="{{ url('pedagogy:comment_edit', comment_id=comment.id) }}">{% trans %}Edit{% endtrans %}</a></p>
|
||||
<p><a href="{{ url('pedagogy:comment_delete', comment_id=comment.id) }}">{% trans %}Delete{% endtrans %}</a></p>
|
||||
|
@ -28,7 +28,7 @@ from django.core.management import call_command
|
||||
|
||||
from core.models import User
|
||||
|
||||
from pedagogy.models import UV
|
||||
from pedagogy.models import UV, UVComment
|
||||
|
||||
|
||||
def create_uv_template(user_id, code="IFC1", exclude_list=[]):
|
||||
@ -72,6 +72,9 @@ def create_uv_template(user_id, code="IFC1", exclude_list=[]):
|
||||
return uv
|
||||
|
||||
|
||||
# UV class tests
|
||||
|
||||
|
||||
class UVCreation(TestCase):
|
||||
"""
|
||||
Test uv creation
|
||||
@ -154,7 +157,7 @@ class UVListTest(TestCase):
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
|
||||
def uv_list_display_success(self):
|
||||
def test_uv_list_display_success(self):
|
||||
# Display for root
|
||||
self.client.login(username="root", password="plop")
|
||||
response = self.client.get(reverse("pedagogy:guide"))
|
||||
@ -170,7 +173,7 @@ class UVListTest(TestCase):
|
||||
response = self.client.get(reverse("pedagogy:guide"))
|
||||
self.assertContains(response, text="PA00")
|
||||
|
||||
def uv_list_display_fail(self):
|
||||
def test_uv_list_display_fail(self):
|
||||
# Don't display for anonymous user
|
||||
response = self.client.get(reverse("pedagogy:guide"))
|
||||
self.assertEquals(response.status_code, 403)
|
||||
@ -189,7 +192,7 @@ class UVDeleteTest(TestCase):
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
|
||||
def uv_delete_root_success(self):
|
||||
def test_uv_delete_root_success(self):
|
||||
self.client.login(username="root", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
@ -198,7 +201,7 @@ class UVDeleteTest(TestCase):
|
||||
)
|
||||
self.assertFalse(UV.objects.filter(code="PA00").exists())
|
||||
|
||||
def uv_delete_pedagogy_admin_success(self):
|
||||
def test_uv_delete_pedagogy_admin_success(self):
|
||||
self.client.login(username="tutu", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
@ -207,7 +210,7 @@ class UVDeleteTest(TestCase):
|
||||
)
|
||||
self.assertFalse(UV.objects.filter(code="PA00").exists())
|
||||
|
||||
def uv_delete_pedagogy_unauthorized_fail(self):
|
||||
def test_uv_delete_pedagogy_unauthorized_fail(self):
|
||||
# Anonymous user
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
@ -250,59 +253,226 @@ class UVUpdateTest(TestCase):
|
||||
self.sli = User.objects.filter(username="sli").first()
|
||||
self.guy = User.objects.filter(username="guy").first()
|
||||
|
||||
def uv_update_root_success(self):
|
||||
def test_uv_update_root_success(self):
|
||||
self.client.login(username="root", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"pedagogy:uv_update", kwargs={"uv_id": UV.objects.get(code="PA00").id}
|
||||
),
|
||||
create_uv_template(bibou.id, code="PA00"),
|
||||
create_uv_template(self.bibou.id, code="PA00"),
|
||||
)
|
||||
self.assertEquals(UV.objects.get(code="PA00").credit_type, "TM")
|
||||
|
||||
def uv_update_pedagogy_admin_success(self):
|
||||
def test_uv_update_pedagogy_admin_success(self):
|
||||
self.client.login(username="tutu", password="plop")
|
||||
self.client.post(
|
||||
reverse(
|
||||
"pedagogy:uv_udpate",
|
||||
kwargs={"uv_id": UV.objects.get(tutu.id, code="PA00").id},
|
||||
"pedagogy:uv_update", kwargs={"uv_id": UV.objects.get(code="PA00").id}
|
||||
),
|
||||
create_uv_template(code="PA00"),
|
||||
create_uv_template(self.tutu.id, code="PA00"),
|
||||
)
|
||||
self.assertEquals(UV.objects.get(code="PA00").credit_type, "TM")
|
||||
|
||||
def uv_update_pedagogy_unauthorized_fail(self):
|
||||
def test_uv_update_pedagogy_unauthorized_fail(self):
|
||||
# Anonymous user
|
||||
self.client.post(
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"pedagogy:uv_udpate",
|
||||
kwargs={"uv_id": UV.objects.get(0, code="PA00").id},
|
||||
"pedagogy:uv_update", kwargs={"uv_id": UV.objects.get(code="PA00").id}
|
||||
),
|
||||
create_uv_template(code="PA00"),
|
||||
create_uv_template(0, code="PA00"),
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Not subscribed user
|
||||
self.client.login(username="guy", password="plop")
|
||||
self.client.post(
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"pedagogy:uv_udpate",
|
||||
kwargs={"uv_id": UV.objects.get(guy.id, code="PA00").id},
|
||||
"pedagogy:uv_update", kwargs={"uv_id": UV.objects.get(code="PA00").id}
|
||||
),
|
||||
create_uv_template(code="PA00"),
|
||||
create_uv_template(self.guy.id, code="PA00"),
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Simply subscribed user
|
||||
self.client.login(username="sli", password="plop")
|
||||
self.client.post(
|
||||
response = self.client.post(
|
||||
reverse(
|
||||
"pedagogy:uv_udpate",
|
||||
kwargs={"uv_id": UV.objects.get(sli.id, code="PA00").id},
|
||||
"pedagogy:uv_update", kwargs={"uv_id": UV.objects.get(code="PA00").id}
|
||||
),
|
||||
create_uv_template(code="PA00"),
|
||||
create_uv_template(self.sli.id, code="PA00"),
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Check that the UV has not changed
|
||||
self.assertEquals(UV.objects.get(code="PA00").credit_type, "OM")
|
||||
|
||||
|
||||
# UVComment class tests
|
||||
|
||||
|
||||
def create_uv_comment_template(user_id, uv_code="PA00", exclude_list=[]):
|
||||
"""
|
||||
Factory to help UVComment creation/update in post requests
|
||||
"""
|
||||
comment = {
|
||||
"author": user_id,
|
||||
"uv": UV.objects.get(code=uv_code).id,
|
||||
"grade_global": 5,
|
||||
"grade_utility": 5,
|
||||
"grade_interest": 5,
|
||||
"grade_teaching": -1,
|
||||
"grade_work_load": 3,
|
||||
"comment": "Superbe UV qui fait vivre la vie associative de l'école",
|
||||
}
|
||||
for excluded in exclude_list:
|
||||
comment.pop(excluded)
|
||||
return comment
|
||||
|
||||
|
||||
class UVCommentCreationAndDisplay(TestCase):
|
||||
"""
|
||||
Test UVComment creation and it's display
|
||||
Display and creation are the same view
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
self.bibou = User.objects.filter(username="root").first()
|
||||
self.tutu = User.objects.filter(username="tutu").first()
|
||||
self.sli = User.objects.filter(username="sli").first()
|
||||
self.guy = User.objects.filter(username="guy").first()
|
||||
self.uv = UV.objects.get(code="PA00")
|
||||
|
||||
def test_create_uv_comment_admin_success(self):
|
||||
self.client.login(username="root", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id}),
|
||||
create_uv_comment_template(self.bibou.id),
|
||||
)
|
||||
self.assertEquals(response.status_code, 302)
|
||||
response = self.client.get(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id})
|
||||
)
|
||||
self.assertContains(response, text="Superbe UV")
|
||||
|
||||
def test_create_uv_comment_pedagogy_admin_success(self):
|
||||
self.client.login(username="tutu", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id}),
|
||||
create_uv_comment_template(self.tutu.id),
|
||||
)
|
||||
self.assertEquals(response.status_code, 302)
|
||||
response = self.client.get(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id})
|
||||
)
|
||||
self.assertContains(response, text="Superbe UV")
|
||||
|
||||
def test_create_uv_comment_subscriber_success(self):
|
||||
self.client.login(username="sli", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id}),
|
||||
create_uv_comment_template(self.sli.id),
|
||||
)
|
||||
self.assertEquals(response.status_code, 302)
|
||||
response = self.client.get(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id})
|
||||
)
|
||||
self.assertContains(response, text="Superbe UV")
|
||||
|
||||
def test_create_uv_comment_unauthorized_fail(self):
|
||||
# Test with anonymous user
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id}),
|
||||
create_uv_comment_template(0),
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Test with non subscribed user
|
||||
self.client.login(username="guy", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id}),
|
||||
create_uv_comment_template(self.guy.id),
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Check that the comment has never been created
|
||||
self.client.login(username="root", password="plop")
|
||||
response = self.client.get(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id})
|
||||
)
|
||||
self.assertNotContains(response, text="Superbe UV")
|
||||
|
||||
def test_create_uv_comment_bad_form_fail(self):
|
||||
self.client.login(username="root", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id}),
|
||||
create_uv_comment_template(self.bibou.id, exclude_list=["grade_global"]),
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("pedagogy:uv_detail", kwargs={"uv_id": self.uv.id})
|
||||
)
|
||||
self.assertNotContains(response, text="Superbe UV")
|
||||
|
||||
|
||||
class UVCommentDeleteTest(TestCase):
|
||||
"""
|
||||
Test UVComment deletion rights
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
comment_kwargs = create_uv_comment_template(
|
||||
User.objects.get(username="krophil").id
|
||||
)
|
||||
comment_kwargs["author"] = User.objects.get(id=comment_kwargs["author"])
|
||||
comment_kwargs["uv"] = UV.objects.get(id=comment_kwargs["uv"])
|
||||
self.comment = UVComment(**comment_kwargs)
|
||||
self.comment.save()
|
||||
|
||||
def test_uv_comment_delete_root_success(self):
|
||||
self.client.login(username="root", password="plop")
|
||||
self.client.post(
|
||||
reverse("pedagogy:comment_delete", kwargs={"comment_id": self.comment.id})
|
||||
)
|
||||
self.assertFalse(UVComment.objects.filter(id=self.comment.id).exists())
|
||||
|
||||
def test_uv_comment_delete_pedagogy_admin_success(self):
|
||||
self.client.login(username="tutu", password="plop")
|
||||
self.client.post(
|
||||
reverse("pedagogy:comment_delete", kwargs={"comment_id": self.comment.id})
|
||||
)
|
||||
self.assertFalse(UVComment.objects.filter(id=self.comment.id).exists())
|
||||
|
||||
def test_uv_comment_delete_author_success(self):
|
||||
self.client.login(username="krophil", password="plop")
|
||||
self.client.post(
|
||||
reverse("pedagogy:comment_delete", kwargs={"comment_id": self.comment.id})
|
||||
)
|
||||
self.assertFalse(UVComment.objects.filter(id=self.comment.id).exists())
|
||||
|
||||
def test_uv_comment_delete_unauthorized_fail(self):
|
||||
# Anonymous user
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:comment_delete", kwargs={"comment_id": self.comment.id})
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Unsbscribed user
|
||||
self.client.login(username="guy", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:comment_delete", kwargs={"comment_id": self.comment.id})
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Subscribed user (not author of the comment)
|
||||
self.client.login(username="sli", password="plop")
|
||||
response = self.client.post(
|
||||
reverse("pedagogy:comment_delete", kwargs={"comment_id": self.comment.id})
|
||||
)
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
# Check that the comment still exists
|
||||
self.assertTrue(UVComment.objects.filter(id=self.comment.id).exists())
|
||||
|
Loading…
Reference in New Issue
Block a user