Files
penracourses/atlas/tests/test_collection_case_query_messaging.py

119 lines
4.0 KiB
Python

import pytest
from django.contrib.auth import get_user_model
from django.urls import reverse
from atlas.models import CaseCollection, CaseDetail, CaseReviewMessage
@pytest.mark.django_db
def test_collection_case_query_messaging_enabled_default_true():
collection = CaseCollection.objects.create(name="Default messaging collection")
assert collection.case_query_messaging_enabled is True
@pytest.mark.django_db
def test_collection_case_review_thread_returns_404_when_messaging_disabled(create_case, client):
user_model = get_user_model()
author = user_model.objects.create_user(username="author-thread", password="testpass")
collection = CaseCollection.objects.create(
name="Thread disabled",
case_query_messaging_enabled=False,
)
collection.author.add(author)
case = create_case
CaseDetail.objects.create(collection=collection, case=case, sort_order=0)
attempt = collection.get_or_create_cid_user_exam(user_user=author)
client.force_login(author)
url = reverse(
"atlas:collection_case_review_thread",
kwargs={
"exam_id": collection.pk,
"cid_user_exam_id": attempt.pk,
"case_id": case.pk,
},
)
response = client.get(url)
assert response.status_code == 404
@pytest.mark.django_db
def test_collection_user_messages_returns_404_when_messaging_disabled(create_case, client):
user_model = get_user_model()
author = user_model.objects.create_user(username="author-user-messages", password="testpass")
learner = user_model.objects.create_user(username="learner-user-messages", password="testpass")
collection = CaseCollection.objects.create(
name="User messages disabled",
case_query_messaging_enabled=False,
)
collection.author.add(author)
case = create_case
CaseDetail.objects.create(collection=collection, case=case, sort_order=0)
collection.get_or_create_cid_user_exam(user_user=learner)
client.force_login(author)
url = reverse(
"atlas:collection_user_messages",
kwargs={"exam_id": collection.pk, "user_pk": learner.pk},
)
response = client.get(url)
assert response.status_code == 404
@pytest.mark.django_db
def test_user_messages_inbox_ignores_disabled_collection_messages(create_case, client):
user_model = get_user_model()
moderator = user_model.objects.create_user(username="moderator", password="testpass")
learner = user_model.objects.create_user(username="learner", password="testpass")
enabled_collection = CaseCollection.objects.create(
name="Enabled messaging collection",
case_query_messaging_enabled=True,
)
disabled_collection = CaseCollection.objects.create(
name="Disabled messaging collection",
case_query_messaging_enabled=False,
)
enabled_collection.author.add(moderator)
disabled_collection.author.add(moderator)
case = create_case
CaseDetail.objects.create(collection=enabled_collection, case=case, sort_order=0)
CaseDetail.objects.create(collection=disabled_collection, case=case, sort_order=0)
enabled_attempt = enabled_collection.get_or_create_cid_user_exam(user_user=learner)
disabled_attempt = disabled_collection.get_or_create_cid_user_exam(user_user=learner)
CaseReviewMessage.objects.create(
cid_user_exam=enabled_attempt,
case=case,
author=learner,
message_type=CaseReviewMessage.MessageType.QUERY,
message="Enabled message",
requires_acknowledgement=True,
)
CaseReviewMessage.objects.create(
cid_user_exam=disabled_attempt,
case=case,
author=learner,
message_type=CaseReviewMessage.MessageType.QUERY,
message="Disabled message",
requires_acknowledgement=True,
)
client.force_login(moderator)
response = client.get(reverse("atlas:user_messages_inbox"))
assert response.status_code == 200
assert "Enabled messaging collection" in response.content.decode()
assert "Disabled messaging collection" not in response.content.decode()