119 lines
4.0 KiB
Python
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()
|