Skip to content

Commit 6a3c5c4

Browse files
committed
CommunityLibrarySubmission tests
1 parent 97122d1 commit 6a3c5c4

2 files changed

Lines changed: 144 additions & 0 deletions

File tree

contentcuration/contentcuration/tests/test_models.py

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from contentcuration.models import Channel
1919
from contentcuration.models import ChannelHistory
2020
from contentcuration.models import ChannelSet
21+
from contentcuration.models import CommunityLibrarySubmission
2122
from contentcuration.models import ContentNode
2223
from contentcuration.models import CONTENTNODE_TREE_ID_CACHE_KEY
2324
from contentcuration.models import File
@@ -547,6 +548,130 @@ def test_make_content_id_unique(self):
547548
self.assertNotEqual(copied_node_old_content_id, copied_node.content_id)
548549

549550

551+
class CommunityLibrarySubmissionTestCase(PermissionQuerysetTestCase):
552+
@property
553+
def base_queryset(self):
554+
return CommunityLibrarySubmission.objects.all()
555+
556+
def test_create_submission(self):
557+
# Smoke test
558+
channel = testdata.channel()
559+
author = testdata.user()
560+
channel.editors.add(author)
561+
channel.save()
562+
563+
country = testdata.country()
564+
565+
submission = CommunityLibrarySubmission.objects.create(
566+
description="Test submission",
567+
channel=channel,
568+
channel_version=1,
569+
author=author,
570+
categories=["test_category"],
571+
status=CommunityLibrarySubmission.Status.PENDING,
572+
)
573+
submission.countries.add(country)
574+
575+
submission.full_clean()
576+
submission.save()
577+
578+
def test_filter_view_queryset__anonymous(self):
579+
_ = testdata.community_library_submission()
580+
581+
queryset = CommunityLibrarySubmission.filter_view_queryset(
582+
self.base_queryset, user=self.anonymous_user
583+
)
584+
self.assertFalse(queryset.exists())
585+
586+
def test_filter_view_queryset__forbidden_user(self):
587+
_ = testdata.community_library_submission()
588+
589+
queryset = CommunityLibrarySubmission.filter_view_queryset(
590+
self.base_queryset, user=self.forbidden_user
591+
)
592+
self.assertFalse(queryset.exists())
593+
594+
def test_filter_view_queryset__channel_editor(self):
595+
submission_a = testdata.community_library_submission()
596+
submission_b = testdata.community_library_submission()
597+
598+
user = testdata.user()
599+
submission_a.channel.editors.add(user)
600+
submission_a.save()
601+
602+
queryset = CommunityLibrarySubmission.filter_view_queryset(
603+
self.base_queryset, user=user
604+
)
605+
self.assertQuerysetContains(queryset, pk=submission_a.id)
606+
self.assertQuerysetDoesNotContain(queryset, pk=submission_b.id)
607+
608+
def test_filter_view_queryset__admin(self):
609+
submission_a = testdata.community_library_submission()
610+
611+
queryset = CommunityLibrarySubmission.filter_view_queryset(
612+
self.base_queryset, user=self.admin_user
613+
)
614+
self.assertQuerysetContains(queryset, pk=submission_a.id)
615+
616+
def test_filter_edit_queryset__anonymous(self):
617+
_ = testdata.community_library_submission()
618+
619+
queryset = CommunityLibrarySubmission.filter_edit_queryset(
620+
self.base_queryset, user=self.anonymous_user
621+
)
622+
self.assertFalse(queryset.exists())
623+
624+
def test_filter_edit_queryset__forbidden_user(self):
625+
_ = testdata.community_library_submission()
626+
627+
queryset = CommunityLibrarySubmission.filter_edit_queryset(
628+
self.base_queryset, user=self.forbidden_user
629+
)
630+
self.assertFalse(queryset.exists())
631+
632+
def test_filter_edit_queryset__channel_editor(self):
633+
submission = testdata.community_library_submission()
634+
635+
user = testdata.user()
636+
submission.channel.editors.add(user)
637+
submission.save()
638+
639+
queryset = CommunityLibrarySubmission.filter_edit_queryset(
640+
self.base_queryset, user=user
641+
)
642+
self.assertFalse(queryset.exists())
643+
644+
def test_filter_edit_queryset__author__channel_editor(self):
645+
submission_a = testdata.community_library_submission()
646+
submission_b = testdata.community_library_submission()
647+
648+
queryset = CommunityLibrarySubmission.filter_edit_queryset(
649+
self.base_queryset, user=submission_a.author
650+
)
651+
self.assertQuerysetContains(queryset, pk=submission_a.id)
652+
self.assertQuerysetDoesNotContain(queryset, pk=submission_b.id)
653+
654+
def test_filter_edit_queryset__author__not_channel_editor(self):
655+
submission = testdata.community_library_submission()
656+
657+
user = testdata.user(email="new@user.com")
658+
submission.author = user
659+
submission.save()
660+
661+
queryset = CommunityLibrarySubmission.filter_edit_queryset(
662+
self.base_queryset, user=user
663+
)
664+
self.assertFalse(queryset.exists())
665+
666+
def test_filter_edit_queryset__admin(self):
667+
submission_a = testdata.community_library_submission()
668+
669+
queryset = CommunityLibrarySubmission.filter_edit_queryset(
670+
self.base_queryset, user=self.admin_user
671+
)
672+
self.assertQuerysetContains(queryset, pk=submission_a.id)
673+
674+
550675
class AssessmentItemTestCase(PermissionQuerysetTestCase):
551676
@property
552677
def base_queryset(self):

contentcuration/contentcuration/tests/testdata.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,25 @@ def node(data, parent=None): # noqa: C901
206206
return new_node
207207

208208

209+
def country(name="Test Country", code="TC"):
210+
return mixer.blend(cc.Country, name=name, code=code)
211+
212+
213+
def community_library_submission():
214+
channel_obj = channel(name=random_string())
215+
user_obj = user(email=random_string())
216+
channel_obj.editors.add(user_obj)
217+
channel_obj.save()
218+
219+
return mixer.blend(
220+
cc.CommunityLibrarySubmission,
221+
channel=channel_obj,
222+
author=user_obj,
223+
status=cc.CommunityLibrarySubmission.Status.PENDING,
224+
categories=list(),
225+
)
226+
227+
209228
def tree(parent=None):
210229
# Read from json fixture
211230
filepath = os.path.sep.join([os.path.dirname(__file__), "fixtures", "tree.json"])

0 commit comments

Comments
 (0)