def test_status_blocked_bad_review_nothing(self): challenge1 = self.challenge self.create_challenge() challenge2 = self.challenge challenge2.prerequisite = challenge1 challenge2.save() self.create_challenge() challenge3 = self.challenge challenge3.prerequisite = challenge2 challenge3.save() user1 = self.users[0] user2 = self.users[1] user3 = self.users[2] user4 = self.users[3] elaboration1 = Elaboration(challenge=challenge1, user=user1, elaboration_text="test", submission_time=datetime.now()) elaboration1.save() elaboration2 = Elaboration(challenge=challenge1, user=user2, elaboration_text="test", submission_time=datetime.now()) elaboration2.save() elaboration3 = Elaboration(challenge=challenge1, user=user3, elaboration_text="test", submission_time=datetime.now()) elaboration3.save() elaboration4 = Elaboration(challenge=challenge1, user=user4, elaboration_text="test", submission_time=datetime.now()) elaboration4.save() assert not challenge2.is_enabled_for_user(user1) assert challenge1.get_status(user1) == Challenge.USER_REVIEW_MISSING assert challenge2.get_status(user1) == Challenge.NOT_ENABLED bad_review = Review(elaboration=elaboration1, submission_time=datetime.now(), reviewer=user2, appraisal=Review.NOTHING) bad_review.save() assert not challenge2.is_enabled_for_user(user1) assert challenge1.get_status(user1) == Challenge.BLOCKED_BAD_REVIEW assert challenge2.get_status(user1) == Challenge.NOT_ENABLED bad_review.appraisal = Review.SUCCESS bad_review.save() Review(elaboration=elaboration2, submission_time=datetime.now(), reviewer=user1, appraisal=Review.SUCCESS).save() Review(elaboration=elaboration3, submission_time=datetime.now(), reviewer=user1, appraisal=Review.SUCCESS).save() Review(elaboration=elaboration4, submission_time=datetime.now(), reviewer=user1, appraisal=Review.SUCCESS).save() assert challenge1.has_enough_user_reviews(user1) assert challenge1.get_status(user1) == Challenge.DONE_MISSING_PEER_REVIEW assert challenge2.is_enabled_for_user(user1) assert challenge2.get_status(user1) == Challenge.NOT_STARTED bad_review.appraisal = Review.NOTHING bad_review.save() assert challenge2.is_enabled_for_user(user1) assert challenge2.get_status(user1) == Challenge.NOT_STARTED
def test_status_blocked_bad_review_nothing(self): challenge1 = self.challenge self.create_challenge() challenge2 = self.challenge challenge2.prerequisite = challenge1 challenge2.save() self.create_challenge() challenge3 = self.challenge challenge3.prerequisite = challenge2 challenge3.save() user1 = self.users[0] user2 = self.users[1] user3 = self.users[2] user4 = self.users[3] elaboration1 = Elaboration(challenge=challenge1, user=user1, elaboration_text="test", submission_time=datetime.now()) elaboration1.save() elaboration2 = Elaboration(challenge=challenge1, user=user2, elaboration_text="test", submission_time=datetime.now()) elaboration2.save() elaboration3 = Elaboration(challenge=challenge1, user=user3, elaboration_text="test", submission_time=datetime.now()) elaboration3.save() elaboration4 = Elaboration(challenge=challenge1, user=user4, elaboration_text="test", submission_time=datetime.now()) elaboration4.save() assert not challenge2.is_enabled_for_user(user1) assert challenge1.get_status(user1) == Challenge.USER_REVIEW_MISSING assert challenge2.get_status(user1) == Challenge.NOT_ENABLED bad_review = Review(elaboration=elaboration1, submission_time=datetime.now(), reviewer=user2, appraisal=Review.NOTHING) bad_review.save() assert not challenge2.is_enabled_for_user(user1) assert challenge1.get_status(user1) == Challenge.BLOCKED_BAD_REVIEW assert challenge2.get_status(user1) == Challenge.NOT_ENABLED bad_review.appraisal = Review.SUCCESS bad_review.save() Review(elaboration=elaboration2, submission_time=datetime.now(), reviewer=user1, appraisal=Review.SUCCESS).save() Review(elaboration=elaboration3, submission_time=datetime.now(), reviewer=user1, appraisal=Review.SUCCESS).save() Review(elaboration=elaboration4, submission_time=datetime.now(), reviewer=user1, appraisal=Review.SUCCESS).save() assert challenge1.has_enough_user_reviews(user1) assert challenge1.get_status( user1) == Challenge.DONE_MISSING_PEER_REVIEW assert challenge2.is_enabled_for_user(user1) assert challenge2.get_status(user1) == Challenge.NOT_STARTED bad_review.appraisal = Review.NOTHING bad_review.save() assert challenge2.is_enabled_for_user(user1) assert challenge2.get_status(user1) == Challenge.NOT_STARTED
def test_is_blocked(self): challenge1 = self.challenge self.create_challenge() challenge2 = self.challenge challenge2.prerequisite = challenge1 challenge2.save() self.create_challenge() challenge3 = self.challenge challenge3.prerequisite = challenge2 challenge3.save() user1 = self.users[0] user2 = self.users[1] user3 = self.users[2] user4 = self.users[3] elaboration1 = Elaboration(challenge=challenge1, user=user1, elaboration_text="test", submission_time=datetime.now()) elaboration1.save() elaboration2 = Elaboration(challenge=challenge1, user=user2, elaboration_text="test", submission_time=datetime.now()) elaboration2.save() elaboration3 = Elaboration(challenge=challenge1, user=user3, elaboration_text="test", submission_time=datetime.now()) elaboration3.save() elaboration4 = Elaboration(challenge=challenge1, user=user4, elaboration_text="test", submission_time=datetime.now()) elaboration4.save() assert not self.stack.is_blocked(user2) review = Review(elaboration=elaboration2, submission_time=datetime.now(), reviewer=user1, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user2) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user2) assert not self.stack.is_blocked(user3) review = Review(elaboration=elaboration3, submission_time=datetime.now(), reviewer=user1, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user3) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user3) assert not self.stack.is_blocked(user4) review = Review(elaboration=elaboration4, submission_time=datetime.now(), reviewer=user1, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user4) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user4) assert not self.stack.is_blocked(user1) review = Review(elaboration=elaboration1, submission_time=datetime.now(), reviewer=user2, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user1) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user1) review = Review(elaboration=elaboration1, submission_time=datetime.now(), reviewer=user3, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user1) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user1) elaboration5 = Elaboration(challenge=challenge2, user=user1, elaboration_text="test", submission_time=datetime.now()) elaboration5.save() elaboration6 = Elaboration(challenge=challenge2, user=user2, elaboration_text="test", submission_time=datetime.now()) elaboration6.save() elaboration7 = Elaboration(challenge=challenge2, user=user3, elaboration_text="test", submission_time=datetime.now()) elaboration7.save() elaboration8 = Elaboration(challenge=challenge2, user=user4, elaboration_text="test", submission_time=datetime.now()) elaboration8.save() assert not self.stack.is_blocked(user2) review = Review(elaboration=elaboration6, submission_time=datetime.now(), reviewer=user1, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user2) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user2) assert not self.stack.is_blocked(user3) review = Review(elaboration=elaboration7, submission_time=datetime.now(), reviewer=user1, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user3) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user3) assert not self.stack.is_blocked(user4) review = Review(elaboration=elaboration8, submission_time=datetime.now(), reviewer=user1, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user4) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user4) assert not self.stack.is_blocked(user1) review = Review(elaboration=elaboration5, submission_time=datetime.now(), reviewer=user2, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user1) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user1) review = Review(elaboration=elaboration5, submission_time=datetime.now(), reviewer=user3, appraisal=Review.NOTHING) review.save() assert self.stack.is_blocked(user1) review.appraisal = Review.SUCCESS review.save() assert not self.stack.is_blocked(user1)