예제 #1
0
    def test_multiple_tilde_reviews_done_in_last_7_days(self):
        user = UserFactory()

        # add a review within the right timeframe
        review1 = RecruitProjectReviewFactory(timestamp=self.yesterday,
                                              reviewer_user=user)
        review1.timestamp = self.yesterday
        review1.save()
        AgileCardFactory(recruit_project=review1.recruit_project)

        # add another review, now the number of cards reviewed is 2
        review2 = RecruitProjectReviewFactory(timestamp=self.yesterday,
                                              reviewer_user=user)
        review2.timestamp = self.yesterday
        review2.save()
        AgileCardFactory(recruit_project=review2.recruit_project)

        # add a topic review, now the number of cards reviewed is 3
        review3 = TopicReviewFactory(timestamp=self.yesterday,
                                     reviewer_user=user)
        review3.timestamp = self.yesterday
        review3.save()
        AgileCardFactory(topic_progress=review3.topic_progress)
        count = self.stats_serializer.get_tilde_reviews_done_last_7_days(user)
        self.assertEqual(count, 3)
예제 #2
0
    def test_multiple_tilde_reviews_done(self):
        user = UserFactory()

        # add a review
        review1 = RecruitProjectReviewFactory(timestamp=self.yesterday,
                                              reviewer_user=user)
        review1.timestamp = self.yesterday
        review1.save()
        AgileCardFactory(recruit_project=review1.recruit_project)

        # add really old review
        review2 = RecruitProjectReviewFactory(timestamp=self.two_weeks_ago,
                                              reviewer_user=user)
        review2.timestamp = self.two_weeks_ago
        review2.save()
        AgileCardFactory(recruit_project=review2.recruit_project)

        # add a topic review, now we should have 3 reviews
        review3 = TopicReviewFactory(timestamp=self.yesterday,
                                     reviewer_user=user)
        review3.timestamp = self.yesterday
        review3.save()
        AgileCardFactory(topic_progress=review3.topic_progress)
        count = self.stats_serializer.get_total_tilde_reviews_done(user)
        self.assertEqual(count, 3)
예제 #3
0
    def test(self):
        user = UserFactory()
        content_item = ContentItemFactory(flavours=["js"])

        for i in range(CURRICULUM_TRACKING_TRUST_STREAK_LENGTH - 1):
            project = RecruitProjectFactory(content_item=content_item, flavours=["js"])
            RecruitProjectReviewFactory(
                recruit_project=project,
                reviewer_user=user,
                validated=RecruitProjectReview.CORRECT,
            )
            trust_count = ReviewTrust.objects.all().count()
            self.assertEqual(trust_count, 0)

        # add one more and the user should be trusted
        project = RecruitProjectFactory(content_item=content_item, flavours=["js"])
        RecruitProjectReviewFactory(
            recruit_project=project,
            reviewer_user=user,
            validated=RecruitProjectReview.CORRECT,
        )
        trust_count = ReviewTrust.objects.all().count()
        self.assertEqual(trust_count, 1)

        trust = ReviewTrust.objects.first()
        self.assertEqual(trust.content_item, content_item)
        self.assertEqual(trust.user, user)
        self.assertTrue(trust.flavours_match(["js"]))
예제 #4
0
    def test_blacklist(self):
        team = TeamFactory(name="tghyj TechQuest dfghj")
        review = RecruitProjectReviewFactory(
            reviewer_user=self.user_1, validated=RecruitProjectReview.CORRECT)
        assignee = review.recruit_project.recruit_users.first()
        team.user_set.add(assignee)

        self.assertEqual(review.get_validated_streak(), 0)
예제 #5
0
    def test_no_tilde_reviews_done_in_last_7_days(self):
        user = UserFactory()

        # add a review, but it's too old to count
        review = RecruitProjectReviewFactory(timestamp=self.two_weeks_ago,
                                             reviewer_user=user)
        review.timestamp = self.two_weeks_ago
        review.save()
        AgileCardFactory(recruit_project=review.recruit_project)
        count = self.stats_serializer.get_tilde_reviews_done_last_7_days(user)
        self.assertEqual(count, 0)
예제 #6
0
    def test_no_card_in_completed_column_after_untrusted_competent_review(
            self):
        time_two = self.project_1.start_time + timedelta(days=4)
        review_2 = RecruitProjectReviewFactory(
            status=COMPETENT,
            recruit_project=self.project_1,
        )
        review_2.timestamp = time_two
        review_2.save()

        # review_2 had a status of COMPETENT, the reviewer is not trusted and therefore we should have zero cards in
        # the completed column
        self.assertEqual(
            self.stats_serializer.get_cards_in_complete_column_as_assignee(
                user=self.user), 0)
예제 #7
0
    def test_one_card_in_review_feedback_column(self):

        # Request for a review to happen on project_1, card_1
        request_review_time = self.project_1.start_time + timedelta(1)
        time_one = self.project_1.start_time - timedelta(days=6)
        self.project_1.request_review(force_timestamp=request_review_time)
        review_1 = RecruitProjectReviewFactory(status=NOT_YET_COMPETENT,
                                               recruit_project=self.project_1,
                                               timestamp=time_one)
        review_1.timestamp = time_one
        review_1.save()

        # review_1 had a status of NYC, so we should have at least one card in the 'REVIEW FEEDBACK' column
        self.assertEqual(
            self.stats_serializer.
            get_cards_in_review_feedback_column_as_assignee(user=self.user), 1)
예제 #8
0
    def test_that_different_users_get_different_streaks(self):
        review_js_1 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_1,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_2 = RecruitProjectReviewFactory(
            reviewer_user=self.user_2,
            recruit_project=self.project_js_2,
            validated=RecruitProjectReview.CORRECT,
        )

        self.assertEqual(review_js_1.get_validated_streak(), 1)
        self.assertEqual(review_js_2.get_validated_streak(), 1)
예제 #9
0
    def test_get_tilde_cards_reviewed_in_last_7_days(self):
        user = UserFactory()

        # no reviews done yet
        count = self.stats_serializer.get_tilde_cards_reviewed_in_last_7_days(
            user)
        self.assertEqual(count, 0)

        # add a review, but it's too old to count

        review1 = RecruitProjectReviewFactory(timestamp=self.two_weeks_ago,
                                              reviewer_user=user)
        review1.timestamp = self.two_weeks_ago
        review1.save()
        AgileCardFactory(recruit_project=review1.recruit_project)

        count = self.stats_serializer.get_tilde_cards_reviewed_in_last_7_days(
            user)
        self.assertEqual(count, 0)

        # add a review within the right timeframe

        review2 = RecruitProjectReviewFactory(timestamp=self.yesterday,
                                              reviewer_user=user)
        review2.timestamp = self.yesterday
        review2.save()
        AgileCardFactory(recruit_project=review2.recruit_project)
        # assert review.reviewer_user == user

        count = self.stats_serializer.get_tilde_cards_reviewed_in_last_7_days(
            user)
        self.assertEqual(count, 1)

        # add another review on the same card, so now the number of cards reviewed is still 1
        review3 = RecruitProjectReviewFactory(
            timestamp=self.yesterday,
            reviewer_user=user,
            recruit_project=review2.recruit_project,
        )
        review3.timestamp = self.yesterday
        review3.save()
        # AgileCardFactory(recruit_project=review3.recruit_project)

        count = self.stats_serializer.get_tilde_cards_reviewed_in_last_7_days(
            user)
        self.assertEqual(count, 1)

        # add another review, now the number of cards reviewed is 2

        review4 = RecruitProjectReviewFactory(timestamp=self.yesterday,
                                              reviewer_user=user)
        review4.timestamp = self.yesterday
        review4.save()
        AgileCardFactory(recruit_project=review4.recruit_project)

        count = self.stats_serializer.get_tilde_cards_reviewed_in_last_7_days(
            user)
        self.assertEqual(count, 2)
예제 #10
0
    def test_updates_only_fist_one(self):
        time_1 = timezone.now() - datetime.timedelta(days=1)
        time_2 = time_1 + datetime.timedelta(hours=1)
        time_3 = time_1 + datetime.timedelta(hours=2)
        time_4 = time_1 + datetime.timedelta(hours=3)

        project = RecruitProjectFactory()
        project.review_request_time = time_1

        review_1 = RecruitProjectReviewFactory(
            recruit_project=project, timestamp=time_1, status=COMPETENT
        )
        review_1.timestamp = time_2
        review_1.save()
        review_2 = RecruitProjectReviewFactory(
            recruit_project=project, timestamp=time_3, status=COMPETENT
        )
        review_2.timestamp = time_3
        review_2.save()
        review_3 = RecruitProjectReviewFactory(
            recruit_project=project, timestamp=time_4, status=COMPETENT
        )
        review_3.timestamp = time_4
        review_3.trusted = True
        review_3.save()

        review_3.update_recent_validation_flags_for_project()

        review_1.refresh_from_db()
        review_2.refresh_from_db()
        review_3.refresh_from_db()

        self.assertEqual(review_1.validated, RecruitProjectReview.CORRECT)
        self.assertEqual(review_2.validated, None)
        self.assertEqual(review_3.validated, None)
예제 #11
0
    def test_only_grabs_last_review_for_project(self):
        """otherwise people can try to cheat the system by adding extra reviews to the same thing"""

        review_js_1 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_1,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_2 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_1,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_3 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_2,
            validated=RecruitProjectReview.CORRECT,
        )
        review_js_4 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_1,
            validated=RecruitProjectReview.CORRECT,
        )

        self.assertEqual(review_js_1.get_validated_streak(), 1)
        self.assertEqual(review_js_2.get_validated_streak(), 1)
        self.assertEqual(review_js_3.get_validated_streak(), 2)
        self.assertEqual(review_js_4.get_validated_streak(), 2)
예제 #12
0
    def test_interrupted_streak(self):

        review_js_1 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_1,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_2 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_2,
            validated=RecruitProjectReview.INCORRECT,
        )

        review_js_3 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_3,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_4 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_4,
            validated=RecruitProjectReview.CORRECT,
        )

        self.assertEqual(review_js_1.get_validated_streak(), 1)
        self.assertEqual(review_js_2.get_validated_streak(), 0)
        self.assertEqual(review_js_3.get_validated_streak(), 1)
        self.assertEqual(review_js_4.get_validated_streak(), 2)
예제 #13
0
    def test_streak_adds_up_per_flavour(self):
        review_js_1 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_1,
            validated=RecruitProjectReview.CORRECT,
        )

        review_ts_1 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_ts_1,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_2 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_2,
            validated=RecruitProjectReview.CORRECT,
        )

        review_ts_2 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_ts_2,
            validated=RecruitProjectReview.CORRECT,
        )

        review_js_3 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_js_3,
            validated=RecruitProjectReview.CORRECT,
        )

        review_ts_3 = RecruitProjectReviewFactory(
            reviewer_user=self.user_1,
            recruit_project=self.project_ts_3,
            validated=RecruitProjectReview.CORRECT,
        )

        self.assertEqual(review_js_1.get_validated_streak(), 1)
        self.assertEqual(review_js_2.get_validated_streak(), 2)
        self.assertEqual(review_js_3.get_validated_streak(), 3)

        self.assertEqual(review_ts_1.get_validated_streak(), 1)
        self.assertEqual(review_ts_2.get_validated_streak(), 2)
        self.assertEqual(review_ts_3.get_validated_streak(), 3)
예제 #14
0
    def test_all(self):

        time_1 = timezone.now() - datetime.timedelta(days=1)
        time_2 = time_1 + datetime.timedelta(hours=1)
        time_3 = time_1 + datetime.timedelta(hours=2)
        time_4 = time_1 + datetime.timedelta(hours=3)

        project = RecruitProjectFactory()
        project.review_request_time = time_2
        review_1 = RecruitProjectReviewFactory(
            recruit_project=project, timestamp=time_1
        )
        review_1.timestamp = time_1
        review_1.save()
        review_2 = RecruitProjectReviewFactory(
            recruit_project=project, timestamp=time_3
        )
        review_2.timestamp = time_3
        review_2.save()
        review_3 = RecruitProjectReviewFactory(
            recruit_project=project, timestamp=time_4
        )
        review_3.timestamp = time_4
        review_3.save()

        # assert review_1.timestamp == time_1, review_1.timestamp
        # assert project.review_request_time == time_2
        # assert review_2.timestamp == time_3
        # assert review_3.timestamp == time_4
        # assert time_1 < time_2
        # assert time_2 < time_3
        # assert time_3 < time_4

        self.assertFalse(review_1.is_first_review_after_request())
        self.assertTrue(review_2.is_first_review_after_request())
        self.assertFalse(review_3.is_first_review_after_request())
예제 #15
0
    def test_different_statuses(self):
        review = RecruitProjectReviewFactory(reviewer_user=self.user_1, validated=None)
        self.assertEqual(review.get_validated_streak(), 0)

        review = RecruitProjectReviewFactory(
            reviewer_user=self.user_1, validated=RecruitProjectReview.INCORRECT
        )
        self.assertEqual(review.get_validated_streak(), 0)
        review = RecruitProjectReviewFactory(
            reviewer_user=self.user_1, validated=RecruitProjectReview.CONTRADICTED
        )
        self.assertEqual(review.get_validated_streak(), 0)
        review = RecruitProjectReviewFactory(
            reviewer_user=self.user_1, validated=RecruitProjectReview.CORRECT
        )
        self.assertEqual(review.get_validated_streak(), 1)