def make_seed_submission(assignment, submitter, final=False): with open('app/seed/hog_modified.py') as fp: messages = {} messages['file_contents'] = { 'hog.py': fp.read(), 'hogq.scm': 'Blank Stuff', 'submit': final } g = models.User(email=["*****@*****.**"], is_admin=True) g.put() score = models.Score(score=88, tag='test', grader=g.key) score.put() messages = [ models.Message(kind=kind, contents=contents) for kind, contents in messages.items() ] score = models.Score(score=10) score.put() backup = models.Backup(messages=messages, assignment=assignment.key, submitter=submitter.key, client_time=random_date()) backup.put() return models.Submission(backup=backup.key, score=[score])
def make_seed_scheme_submission(assignment, submitter, final=False): with open('app/seed/scheme.py') as sc, \ open('app/seed/scheme_reader.py') as sr, \ open('app/seed/tests.scm') as tests, \ open('app/seed/questions.scm') as quest: messages = {} messages['file_contents'] = { 'scheme.py': sc.read(), 'scheme_reader.py': sr.read(), 'tests.scm': tests.read(), 'questsions.scm': quest.read(), 'submit': final } messages = [ models.Message(kind=kind, contents=contents) for kind, contents in messages.items() ] backup = models.Backup(messages=messages, assignment=assignment.key, submitter=submitter.key, client_time=random_date()) backup.put() return models.Submission(backup=backup.key)
def test_scores_forassign_w_fs_wo_scores(self): """Tests that fs scores are loaded""" assign = models.Assignment().put() user = models.User(email=['*****@*****.**']).put() backup = models.Backup(submitter=user, assignment=assign).put() subm = models.Submission(backup=backup).put() models.FinalSubmission(submitter=user, assignment=assign, submission=subm).put() user = user.get() self.assertNotEqual(user.get_final_submission(assign), None) self.assertFalse(user.scores_for_assignment(assign.get())[1])
def test_backup_index(self): """Tests permissions for backup""" admin = models.User(email=['*****@*****.**']).put().get() course = make_fake_course(admin) models.Participant.add_role(admin.key, course.key, constants.STAFF_ROLE) index = Need('index') assignment = make_fake_assignment(course, admin) backup = models.Backup(submitter=admin.key, assignment=assignment.key).put().get() query = models.Backup.query() self.assertNotEqual(False, models.Backup._can(admin, index, backup, query))
def test_get_final_wo_final(self): """""" admin = models.User(email=['*****@*****.**']).put().get() student = models.User(email=['*****@*****.**']).put().get() course = make_fake_course(admin) assignment = make_fake_assignment(course, admin) assignment.revision = True assignment.put().get() group = make_fake_group(assignment, admin, student).put() backup = models.Backup(submitter=student.key, assignment=assignment.key).put() submission = models.Submission(backup=backup).put() self.assertEqual(submission.get().mark_as_final().get().group, group)
def test_get_final(self): """Test get_final""" admin = models.User(email=['*****@*****.**']).put().get() student = models.User(email=['*****@*****.**']).put().get() course = make_fake_course(admin) assignment = make_fake_assignment(course, admin).put().get() backup = models.Backup(submitter=student.key, assignment=assignment.key).put() submission = models.Submission(backup=backup).put() fsubm = models.FinalSubmission(submitter=student.key, assignment=assignment.key, group=make_fake_group( assignment, admin, student).key, submission=submission).put().get() self.assertEqual(fsubm, submission.get().get_final())
def test_no_resubmit_other_user(self): user_obj, user_obj2 = self.get_user_pair() calls = [0] def resubmit(*args): calls[0] += 1 self.mock(models.Submission, 'resubmit', resubmit) backup = models.Backup() backup.submitter = user_obj.key backup.put() subm = models.Submission(backup=backup.key) subm.put() self.merge_user(user_obj, user_obj2) self.assertEqual(calls[0], 0)
def make_fake_backup(assignment, user): rval = models.Backup(submitter=user.key, assignment=assignment.key) rval.put() return rval
def setUp(self): super(FinalSubmissionTest, self).setUp() self.courses = { "first": models.Course(institution="UC Awesome", display_name="First Course", instructor=[self.accounts['admin'].key]), "second": models.Course(institution="UC Awesome", display_name="Second Course", instructor=[self.accounts['admin'].key]), } for course in self.courses.values(): course.put() for student in ["student0", "student1", "student2"]: models.Participant.add_role(self.accounts[student], self.courses['first'], constants.STUDENT_ROLE) self.assignments = { "first": models.Assignment(name="first", points=3, creator=self.accounts["admin"].key, course=self.courses['first'].key, display_name="first display", templates="{}", max_group_size=3, due_date=NOW + datetime.timedelta(days=1)), } for assign in self.assignments.values(): assign.put() self.assign = self.assignments["first"] self.backups = { "first": models.Backup( submitter=self.accounts["student0"].key, assignment=self.assignments["first"].key, messages=[ models.Message(kind='file_contents', contents={"trends.py": ""}) ], ), "second": models.Backup( submitter=self.accounts["student1"].key, assignment=self.assignments["first"].key, messages=[ models.Message(kind='file_contents', contents={"trends.py": ""}) ], ), "third": models.Backup( submitter=self.accounts["student2"].key, assignment=self.assignments["first"].key, messages=[ models.Message(kind='file_contents', contents={"trends.py": ""}) ], ), } for backup in self.backups.values(): backup.put()
def get_basic_instance(self, mutate=True): rval = models.Backup(submitter=self._submitter.key, assignment=self._assign.key) return rval
def setUp(self): #pylint: disable=invalid-name super(BaseUnitTest, self).setUp() self.accounts = self.get_accounts() for user in self.accounts.values(): user.put() self.courses = { "first": models.Course(institution="UC Awesome a", instructor=[self.accounts['admin'].key]), "second": models.Course(institution="UC Awesome b", instructor=[self.accounts['admin'].key]), } for course in self.courses.values(): course.put() self.enroll("student0", "first", STUDENT_ROLE) self.enroll("student1", "first", STUDENT_ROLE) self.enroll("student2", "second", STUDENT_ROLE) self.enroll("staff", "first", STAFF_ROLE) self.assignments = { "first": models.Assignment(name="first", points=3, creator=self.accounts["admin"].key, course=self.courses['first'].key, display_name="first display", templates="{}", max_group_size=3, due_date=datetime.datetime.now()), "second": models.Assignment(name="second", points=3, creator=self.accounts["admin"].key, course=self.courses['second'].key, display_name="second display", templates="{}", max_group_size=3, due_date=datetime.datetime.now()), "empty": models.Assignment(name="empty", points=3, creator=self.accounts["admin"].key, course=self.courses['first'].key, display_name="second display", templates="{}", max_group_size=4, due_date=datetime.datetime.now()), } for assign in self.assignments.values(): assign.put() self.backups = { "first": models.Backup( submitter=self.accounts["student0"].key, assignment=self.assignments["first"].key, ), "second": models.Backup( submitter=self.accounts["student1"].key, assignment=self.assignments["first"].key, ), "third": models.Backup( submitter=self.accounts["student2"].key, assignment=self.assignments["second"].key, ), } for backup in self.backups.values(): backup.put() self.submissions = { "first": models.Submission(backup=self.backups["first"].key), "second": models.Submission(backup=self.backups["second"].key), "third": models.Submission(backup=self.backups["third"].key), } for submission in self.submissions.values(): submission.put() self.groups = { 'group1': models.Group(member=[ self.accounts['student0'].key, self.accounts['student1'].key ], assignment=self.assignments['first'].key) } self.groups['group1'].put() group_backup = models.Backup( submitter=self.accounts['student0'].key, assignment=self.assignments['first'].key, ) group_backup.put() self.backups['group'] = group_backup group_submission = models.Submission(backup=group_backup.key) group_submission.put() self.submissions['group'] = group_submission self.queues = { "first": models.Queue( assignment=self.assignments["first"].key, assigned_staff=[self.accounts["staff"].key], ), } for queue in self.queues.values(): queue.put() self.diffs = {"first": models.Diff()} for diff in self.diffs.values(): diff.put() self.comments = { "first": models.Comment(author=self.accounts['student0'].key, diff=self.diffs["first"].key, message="First comment"), } for comment in self.comments.values(): comment.put() self.user = None