def test_default_ordering_by_deadline_datetime_ascending(self): now = timezone.now() testuser = mommy.make(settings.AUTH_USER_MODEL, shortname='*****@*****.**', fullname='Test User') testgroup1 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment A') make_first_feedbackset_in_group(group=testgroup1, deadline_datetime=now + timezone.timedelta(days=40)) testgroup2 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment B') make_first_feedbackset_in_group(group=testgroup2, deadline_datetime=now + timezone.timedelta(days=30)) testgroup3 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment C') mommy.make('core.Candidate', assignment_group=testgroup1, relatedstudent__user=testuser) mommy.make('core.Candidate', assignment_group=testgroup2, relatedstudent__user=testuser) mommy.make('core.Candidate', assignment_group=testgroup3, relatedstudent__user=testuser) selector = self.mock_http200_getrequest_htmls( requestuser=mommy.make(settings.AUTH_USER_MODEL, is_superuser=True), viewkwargs={'user_id': testuser.id} ).selector assignment_longname_list = [element.alltext_normalized for element in selector.list('.django-cradmin-listbuilder-itemvalue-titledescription-title')] self.assertListEqual( [ 'Assignment C', 'Assignment B', 'Assignment A' ], assignment_longname_list )
def test_merged_feedbackset_only_internal_notes_visible(self): testuser = mommy.make(settings.AUTH_USER_MODEL) testassignment = mommy.make_recipe( 'devilry.apps.core.assignment_activeperiod_end') testgroup = mommy.make('core.AssignmentGroup', parentnode=testassignment) merged_feedbackset = mommy.make( 'devilry_group.FeedbackSet', group=testgroup, feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT) mommy.make( 'devilry_group.GroupComment', feedback_set=merged_feedbackset, visibility=GroupComment.VISIBILITY_VISIBLE_TO_EXAMINER_AND_ADMINS) feedbackset = group_mommy.make_first_feedbackset_in_group( group=testgroup) feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset( group=testgroup, requestuser=testuser, devilryrole=self.devilryrole) timeline_builder = FeedbackFeedTimelineBuilder( assignment=testassignment, feedbacksets=feedbackset_queryset, group=testgroup) timeline_builder.build() timeline_list = timeline_builder.get_as_list() self.assertEqual(len(timeline_list), 2) self.assertEqual(timeline_list[0]['feedbackset'], merged_feedbackset) self.assertEqual(timeline_list[1]['feedbackset'], feedbackset)
def test_merged_feedbackset_only_with_grading_visible(self): testuser = mommy.make(settings.AUTH_USER_MODEL) testassignment = mommy.make_recipe( 'devilry.apps.core.assignment_activeperiod_end') testgroup = mommy.make('core.AssignmentGroup', parentnode=testassignment) merged_feedbackset = mommy.make( 'devilry_group.FeedbackSet', grading_published_datetime=timezone.now(), group=testgroup, feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT) feedbackset = group_mommy.make_first_feedbackset_in_group( group=testgroup) feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset( group=testgroup, requestuser=testuser, devilryrole=self.devilryrole) timeline_builder = FeedbackFeedTimelineBuilder( assignment=testassignment, feedbacksets=feedbackset_queryset, group=testgroup) timeline_builder.build() timeline_list = timeline_builder.get_as_list() self.assertEqual(len(timeline_list), 2) self.assertEqual(timeline_list[0]['feedbackset'], merged_feedbackset) self.assertEqual(timeline_list[1]['feedbackset'], feedbackset)
def test_feedbackset_current_deadline_first_attempt(self): test_assignment = mommy.make_recipe( 'devilry.apps.core.assignment_activeperiod_start') test_feedbackset = group_mommy.make_first_feedbackset_in_group( group__parentnode=test_assignment) self.assertEquals(test_feedbackset.current_deadline(), test_assignment.first_deadline)
def test_feedbackset_ignored_without_reason(self): test_feedbackset = group_mommy.make_first_feedbackset_in_group( ignored=True) with self.assertRaisesMessage( ValidationError, 'FeedbackSet can not be ignored without a reason'): test_feedbackset.full_clean()
def test_feedbackset_not_ignored_with_reason(self): test_feedbackset = group_mommy.make_first_feedbackset_in_group( ignored_reason='dewey was sick!') with self.assertRaisesMessage( ValidationError, 'FeedbackSet can not have a ignored reason without being set to ignored.' ): test_feedbackset.full_clean()
def test_feedbackset_ignored_with_grading_points(self): test_feedbackset = group_mommy.make_first_feedbackset_in_group( ignored=True, ignored_reason='test', grading_points=10) with self.assertRaisesMessage( ValidationError, 'Ignored FeedbackSet can not have grading_published_datetime, ' 'grading_points or grading_published_by set.'): test_feedbackset.full_clean()
def test_feedbackset_ignored_with_grading_points(self): test_feedbackset = group_mommy.make_first_feedbackset_in_group( ignored=True, ignored_reason='test', grading_points=10) with self.assertRaisesMessage(ValidationError, 'Ignored FeedbackSet can not have grading_published_datetime, ' 'grading_points or grading_published_by set.'): test_feedbackset.full_clean()
def test_order_deadline_ascending(self): now = timezone.now() testuser = mommy.make(settings.AUTH_USER_MODEL, shortname='*****@*****.**', fullname='Test User') testgroup1 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment A') make_first_feedbackset_in_group(group=testgroup1, deadline_datetime=now + timezone.timedelta(days=40)) testgroup2 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment B') make_first_feedbackset_in_group(group=testgroup2, deadline_datetime=now + timezone.timedelta(days=30)) testgroup3 = mommy.make('core.AssignmentGroup', parentnode__long_name='Assignment C') mommy.make('core.Candidate', assignment_group=testgroup1, relatedstudent__user=testuser) mommy.make('core.Candidate', assignment_group=testgroup2, relatedstudent__user=testuser) mommy.make('core.Candidate', assignment_group=testgroup3, relatedstudent__user=testuser) selector = self.mock_http200_getrequest_htmls(requestuser=mommy.make( settings.AUTH_USER_MODEL, is_superuser=True), viewkwargs={ 'user_id': testuser.id, 'filters_string': 'orderby_deadline-' }).selector assignment_longname_list = [ element.alltext_normalized for element in selector.list( '.django-cradmin-listbuilder-itemvalue-titledescription-title') ] self.assertListEqual(['Assignment C', 'Assignment B', 'Assignment A'], assignment_longname_list)
def test_file_download_user_not_in_group_404(self): # Test user can't download if not part of AssignmentGroup testgroup = mommy.make('core.AssignmentGroup') testuser = mommy.make(settings.AUTH_USER_MODEL, shortname='*****@*****.**', fullname='Dewey Duck') testcomment = mommy.make('devilry_group.GroupComment', user_role='examiner', feedback_set=devilry_group_mommy_factories.make_first_feedbackset_in_group()) commentfile = mommy.make('devilry_comment.CommentFile', comment=testcomment, filename='testfile.txt') commentfile.file.save('testfile.txt', ContentFile('testcontent')) with self.assertRaises(Http404): self.mock_getrequest( requestuser=testuser, cradmin_role=testgroup, viewkwargs={ 'commentfile_id': commentfile.id })
def test_merged_feedbackset_without_with_grading_or_public_commnet_visible(self): testuser = mommy.make(settings.AUTH_USER_MODEL) testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_end') testgroup = mommy.make('core.AssignmentGroup', parentnode=testassignment) merged_feedbackset = mommy.make('devilry_group.FeedbackSet', group=testgroup, feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT) feedbackset = group_mommy.make_first_feedbackset_in_group(group=testgroup) feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset( group=testgroup, requestuser=testuser, devilryrole=self.devilryrole ) timeline_builder = FeedbackFeedTimelineBuilder( assignment=testassignment, feedbacksets=feedbackset_queryset, group=testgroup ) timeline_builder.build() timeline_list = timeline_builder.get_as_list() self.assertEqual(len(timeline_list), 1) self.assertEqual(timeline_list[0]['feedbackset'], feedbackset)
def test_merged_feedbackset_only_internal_notes_not_visible(self): testuser = mommy.make(settings.AUTH_USER_MODEL) testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_end') testgroup = mommy.make('core.AssignmentGroup', parentnode=testassignment) merged_feedbackset = mommy.make('devilry_group.FeedbackSet', group=testgroup, feedbackset_type=FeedbackSet.FEEDBACKSET_TYPE_MERGE_FIRST_ATTEMPT) mommy.make('devilry_group.GroupComment', feedback_set=merged_feedbackset, visibility=GroupComment.VISIBILITY_VISIBLE_TO_EXAMINER_AND_ADMINS) feedbackset = group_mommy.make_first_feedbackset_in_group(group=testgroup) feedbackset_queryset = builder_base.get_feedbackfeed_builder_queryset( group=testgroup, requestuser=testuser, devilryrole=self.devilryrole ) timeline_builder = FeedbackFeedTimelineBuilder( assignment=testassignment, feedbacksets=feedbackset_queryset, group=testgroup ) timeline_builder.build() timeline_list = timeline_builder.get_as_list() self.assertEqual(len(timeline_list), 1) self.assertEqual(timeline_list[0]['feedbackset'], feedbackset)
def test_feedbackset_group(self): testgroup = mommy.make('core.AssignmentGroup') feedbackset = group_mommy.make_first_feedbackset_in_group( group=testgroup) self.assertEquals(feedbackset.group, testgroup)
def test_feedbackset_not_ignored_with_reason(self): test_feedbackset = group_mommy.make_first_feedbackset_in_group( ignored_reason='dewey was sick!') with self.assertRaisesMessage(ValidationError, 'FeedbackSet can not have a ignored reason without being set to ignored.'): test_feedbackset.full_clean()
def test_feedbackset_ignored_without_reason(self): test_feedbackset = group_mommy.make_first_feedbackset_in_group(ignored=True) with self.assertRaisesMessage(ValidationError, 'FeedbackSet can not be ignored without a reason'): test_feedbackset.full_clean()
def test_feedbackset_grading_points(self): feedbackset = group_mommy.make_first_feedbackset_in_group( grading_points=10) self.assertEquals(feedbackset.grading_points, 10)
def test_feedbackset_grading_points_default_none(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNone(feedbackset.grading_points)
def test_feedbackset_current_deadline_is_none(self): test_assignment = mommy.make('core.Assignment') test_feedbackset = group_mommy.make_first_feedbackset_in_group( group__parentnode=test_assignment) self.assertIsNone(test_feedbackset.current_deadline())
def test_feedbackset_current_deadline_first_attempt(self): test_assignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start') test_feedbackset = group_mommy.make_first_feedbackset_in_group( group__parentnode=test_assignment) self.assertEqual(test_feedbackset.current_deadline(), test_assignment.first_deadline)
def test_feedbackset_grading_points_default_none(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNone(feedbackset.grading_points)
def test_feedbackset_grading_published_datetime_default_none(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNone(feedbackset.grading_published_datetime)
def test_feedbackset_created_by(self): testuser = mommy.make(settings.AUTH_USER_MODEL) feedbackset = group_mommy.make_first_feedbackset_in_group( created_by=testuser) self.assertEqual(feedbackset.created_by, testuser)
def test_feedbackset_group(self): testgroup = mommy.make('core.AssignmentGroup') feedbackset = group_mommy.make_first_feedbackset_in_group( group=testgroup) self.assertEqual(feedbackset.group, testgroup)
def test_feedbackset_feedbackset_type_default_first_try(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertEqual(feedbackset.feedbackset_type, group_models.FeedbackSet.FEEDBACKSET_TYPE_FIRST_ATTEMPT)
def test_feedbackset_feedbackset_type_default_first_try(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertEquals( feedbackset.feedbackset_type, group_models.FeedbackSet.FEEDBACKSET_TYPE_FIRST_ATTEMPT)
def test_feedbackset_created_datetime(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNotNone(feedbackset.created_datetime)
def test_feedbackset_created_by(self): testuser = mommy.make(settings.AUTH_USER_MODEL) feedbackset = group_mommy.make_first_feedbackset_in_group( created_by=testuser) self.assertEquals(feedbackset.created_by, testuser)
def test_feedbackset_grading_published_datetime(self): feedbackset = group_mommy.make_first_feedbackset_in_group( grading_published_datetime=timezone.now()) self.assertIsNotNone(feedbackset.grading_published_datetime)
def test_feedbackset_created_datetime(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNotNone(feedbackset.created_datetime)
def test_feedbackset_grading_points(self): feedbackset = group_mommy.make_first_feedbackset_in_group(grading_points=10) self.assertEqual(feedbackset.grading_points, 10)
def test_feedbackset_grading_published_datetime_default_none(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNone(feedbackset.grading_published_datetime)
def test_feedbackset_grading_published_datetime(self): feedbackset = group_mommy.make_first_feedbackset_in_group( grading_published_datetime=timezone.now()) self.assertIsNotNone(feedbackset.grading_published_datetime)
def test_feedbackset_deadline_datetime_default_none(self): feedbackset = group_mommy.make_first_feedbackset_in_group() self.assertIsNone(feedbackset.deadline_datetime)