@@ -798,6 +798,56 @@ def test_exercise_staff_views(self) -> None:
798798 response = self .client .get (list_submissions_url )
799799 self .assertEqual (response .status_code , 403 )
800800
801+ def test_submission_invalidate_view (self ):
802+ invalidate_submission_url = self .submission .get_url ('submission-invalidate' )
803+ revalidate_submission_url = self .submission .get_url ('submission-revalidate' )
804+ self .submission .feedback = "grader feedback"
805+ self .submission .assistant_feedback = "assistant feedback"
806+ self .submission .grading_data = {"source" : "grader" }
807+ self .submission .set_points (7 , 10 , no_penalties = True )
808+ self .submission .set_ready ()
809+ self .submission .save ()
810+
811+ self .client .login (username = "testUser" , password = "testPassword" )
812+ response = self .client .post (invalidate_submission_url )
813+ self .assertEqual (response .status_code , 403 )
814+
815+ self .client .login (username = "grader" , password = "graderPassword" )
816+ response = self .client .post (invalidate_submission_url )
817+ self .assertEqual (response .status_code , 403 )
818+
819+ self .client .login (username = "staff" , password = "staffPassword" )
820+ response = self .client .post (invalidate_submission_url )
821+ self .assertEqual (response .status_code , 302 )
822+
823+ self .submission .refresh_from_db ()
824+ self .assertEqual (self .submission .status , Submission .STATUS .INVALIDATED )
825+ self .assertEqual (self .submission .feedback , "grader feedback" )
826+ self .assertEqual (self .submission .assistant_feedback , "assistant feedback" )
827+ self .assertEqual (self .submission .grading_data , {"source" : "grader" })
828+
829+ response = self .client .post (invalidate_submission_url )
830+ self .assertEqual (response .status_code , 302 )
831+ self .submission .refresh_from_db ()
832+ self .assertEqual (self .submission .status , Submission .STATUS .INVALIDATED )
833+
834+ self .client .login (username = "grader" , password = "graderPassword" )
835+ response = self .client .post (revalidate_submission_url )
836+ self .assertEqual (response .status_code , 403 )
837+
838+ self .client .login (username = "staff" , password = "staffPassword" )
839+ response = self .client .post (revalidate_submission_url )
840+ self .assertEqual (response .status_code , 302 )
841+ self .submission .refresh_from_db ()
842+ self .assertEqual (self .submission .status , Submission .STATUS .READY )
843+
844+ self .submission .set_error ()
845+ self .submission .save ()
846+ response = self .client .post (invalidate_submission_url )
847+ self .assertEqual (response .status_code , 302 )
848+ self .submission .refresh_from_db ()
849+ self .assertEqual (self .submission .status , Submission .STATUS .ERROR )
850+
801851 def test_uploading_and_viewing_file (self ):
802852 exercise = BaseExercise .objects .create (
803853 order = 4 ,
0 commit comments