from datetime import timedelta, date from graphql_relay import to_global_id from assignments.factories import AssignmentFactory, StudentSubmissionFactory from assignments.tests.queries.mutations import ( UPDATE_ASSIGNMENT_MUTATION, UPDATE_SUBMISSION_FEEDBACK_MUTATION, ) from core.tests.base_test import SkillboxTestCase class AssignmentReadOnlyTestCase(SkillboxTestCase): def setUp(self) -> None: self.createDefault() yesterday = date.today() - timedelta(days=1) self.student1.license_expiry_date = yesterday self.student1.save() self.teacher.license_expiry_date = yesterday self.teacher.save() self.assignment = AssignmentFactory() self.assignment_id = to_global_id("AssignmentNode", self.assignment.id) def test_edit_assignment_fails(self): variables = { "input": { "assignment": { "answer": "bla", "document": "", "final": False, "id": self.assignment_id, } } } result = self.get_client(self.student1).execute( UPDATE_ASSIGNMENT_MUTATION, variables=variables ) self.assertIsNotNone(result.errors) def test_share_assignment_fails(self): variables = { "input": { "assignment": { "answer": "bla", "document": "", "final": True, "id": self.assignment_id, } } } result = self.get_client(self.student1).execute( UPDATE_ASSIGNMENT_MUTATION, variables=variables ) self.assertIsNotNone(result.errors) def test_edit_feedback_fails(self): student_submission = StudentSubmissionFactory( assignment=self.assignment, student=self.student1, final=True ) student_submission_id = to_global_id( "StudentSubmissionNode", student_submission.id ) result = self.get_client(self.teacher).execute( UPDATE_SUBMISSION_FEEDBACK_MUTATION, variables={ "input": { "submissionFeedback": { "studentSubmission": student_submission_id, "text": "Feedback", "final": False, } } }, ) self.assertIsNotNone(result.errors) def test_share_feedback_fails(self): student_submission = StudentSubmissionFactory( assignment=self.assignment, student=self.student1, final=True ) student_submission_id = to_global_id( "StudentSubmissionNode", student_submission.id ) result = self.get_client(self.teacher).execute( UPDATE_SUBMISSION_FEEDBACK_MUTATION, variables={ "input": { "submissionFeedback": { "studentSubmission": student_submission_id, "text": "Feedback", "final": True, } } }, ) self.assertIsNotNone(result.errors)