Пример #1
0
    def test_removed_reviews_property(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW,
            review_bugzilla=True,
            review_science=True)

        self.assertEqual(experiment.changes.count(), 2)

        data = {"review_bugzilla": False, "review_science": False}

        form = ExperimentReviewForm(request=self.request,
                                    data=data,
                                    instance=experiment)

        self.assertTrue(form.is_valid())
        experiment = form.save()

        self.assertEqual(len(form.added_reviews), 0)
        self.assertEqual(len(form.removed_reviews), 2)
        self.assertIn(form.fields["review_bugzilla"].label,
                      form.removed_reviews)
        self.assertIn(form.fields["review_science"].label,
                      form.removed_reviews)

        self.assertEqual(experiment.changes.count(), 3)
Пример #2
0
    def test_form_saves_reviews(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW)

        data = {
            "review_phd": True,
            "review_science": True,
            "review_peer": True,
            "review_relman": True,
            "review_qa": True,
            "review_legal": True,
            "review_ux": True,
            "review_security": True,
        }

        form = ExperimentReviewForm(request=self.request,
                                    data=data,
                                    instance=experiment)

        self.assertTrue(form.is_valid())
        experiment = form.save()
        self.assertTrue(experiment.review_phd)
        self.assertTrue(experiment.review_science)
        self.assertTrue(experiment.review_peer)
        self.assertTrue(experiment.review_relman)
        self.assertTrue(experiment.review_qa)
        self.assertTrue(experiment.review_legal)
        self.assertTrue(experiment.review_ux)
        self.assertTrue(experiment.review_security)
Пример #3
0
    def test_cannot_check_review_qa_without_permissions(self):
        user_1 = UserFactory.create()
        user_2 = UserFactory.create()

        content_type = ContentType.objects.get_for_model(Experiment)
        permission = Permission.objects.get(content_type=content_type,
                                            codename="can_check_QA_signoff")
        user_1.user_permissions.add(permission)
        self.assertTrue(user_1.has_perm("experiments.can_check_QA_signoff"))
        self.assertFalse(user_2.has_perm("experiments.can_check_QA_signoff"))

        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW)

        self.request.user = user_2
        form = ExperimentReviewForm(request=self.request,
                                    data={"review_qa": True},
                                    instance=experiment)

        self.assertTrue(form.is_valid())
        experiment = form.save()
        self.assertFalse(experiment.review_qa)

        self.request.user = user_1

        form = ExperimentReviewForm(request=self.request,
                                    data={"review_qa": True},
                                    instance=experiment)

        self.assertTrue(form.is_valid())
        experiment = form.save()

        self.assertTrue(experiment.review_qa)
Пример #4
0
 def test_adds_bugzilla_comment_when_review_phd_is_set(self):
     experiment = ExperimentFactory.create_with_status(
         Experiment.STATUS_REVIEW, bugzilla_id="123", review_phd=False)
     form = ExperimentReviewForm(
         request=self.request,
         data={"review_phd": True},
         instance=experiment,
     )
     self.assertTrue(form.is_valid())
     experiment = form.save()
     self.mock_bugzilla_requests_post.assert_called_with(
         settings.BUGZILLA_COMMENT_URL.format(id=experiment.bugzilla_id),
         {"comment": format_bug_body(experiment)},
     )
Пример #5
0
 def test_does_not_add_bugzilla_comment_when_review_phd_is_already_set(
         self):
     experiment = ExperimentFactory.create_with_status(
         Experiment.STATUS_REVIEW, bugzilla_id="123", review_phd=True)
     form = ExperimentReviewForm(
         request=self.request,
         data={
             "review_phd": True,
             "review_vp": True
         },
         instance=experiment,
     )
     self.assertTrue(form.is_valid())
     experiment = form.save()
     self.mock_bugzilla_requests_post.assert_not_called()
Пример #6
0
    def test_required_reviews(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW,
            type=Experiment.TYPE_PREF,
            review_relman=True,
            review_science=True,
        )

        form = ExperimentReviewForm(request=self.request,
                                    data={},
                                    instance=experiment)

        self.assertEqual(
            set([f.name for f in form.required_reviews]),
            set([
                "review_science",
                "review_advisory",
                "review_engineering",
                "review_qa_requested",
                "review_intent_to_ship",
                "review_bugzilla",
                "review_qa",
                "review_relman",
            ]),
        )
Пример #7
0
    def test_added_reviews_property(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW)

        data = {"review_phd": True, "review_science": True}

        form = ExperimentReviewForm(request=self.request,
                                    data=data,
                                    instance=experiment)

        self.assertTrue(form.is_valid())
        experiment = form.save()

        self.assertEqual(len(form.added_reviews), 2)
        self.assertEqual(len(form.removed_reviews), 0)
        self.assertIn(form.fields["review_phd"].label, form.added_reviews)
        self.assertIn(form.fields["review_science"].label, form.added_reviews)
Пример #8
0
    def test_optional_reviews_when_a_risk_option_is_true(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW,
            review_relman=True,
            review_science=True,
            risk_partner_related=True,
        )

        form = ExperimentReviewForm(request=self.request, data={}, instance=experiment)

        self.assertNotIn(form["review_vp"], form.optional_reviews)
        self.assertIn(form["review_vp"], form.required_reviews)
Пример #9
0
    def test_required_reviews_for_rollout(self):
        experiment = ExperimentFactory.create(type=Experiment.TYPE_ROLLOUT)

        form = ExperimentReviewForm(self.request, instance=experiment)

        self.assertEqual(
            set([f.name for f in form.required_reviews]),
            set([
                "review_qa",
                "review_intent_to_ship",
                "review_qa_requested",
                "review_advisory",
                "review_relman",
            ]),
        )
Пример #10
0
    def test_optional_reviews_for_rollout(self):
        experiment = ExperimentFactory.create(type=Experiment.TYPE_ROLLOUT)

        form = ExperimentReviewForm(self.request, instance=experiment)

        self.assertEqual(
            set([f.name for f in form.optional_reviews]),
            set([
                "review_impacted_teams",
                "review_ux",
                "review_legal",
                "review_security",
                "review_vp",
                "review_comms",
                "review_data_steward",
            ]),
        )
Пример #11
0
    def test_optional_reviews(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW, review_relman=True, review_science=True
        )

        form = ExperimentReviewForm(request=self.request, data={}, instance=experiment)

        self.assertEqual(
            form.optional_reviews,
            [
                form["review_comms"],
                form["review_data_steward"],
                form["review_impacted_teams"],
                form["review_legal"],
                form["review_security"],
                form["review_ux"],
                form["review_vp"],
            ],
        )
Пример #12
0
    def test_required_reviews(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW, review_relman=True, review_science=True
        )

        form = ExperimentReviewForm(
            request=self.request, data={}, instance=experiment
        )

        self.assertEqual(
            form.required_reviews,
            (
                form["review_advisory"],
                form["review_science"],
                form["review_engineering"],
                form["review_qa_requested"],
                form["review_intent_to_ship"],
                form["review_bugzilla"],
                form["review_qa"],
                form["review_relman"],
            ),
        )
Пример #13
0
    def test_form_saves_reviews(self):
        user = UserFactory.create()
        content_type = ContentType.objects.get_for_model(Experiment)
        experiment_model_permissions = Permission.objects.filter(
            content_type=content_type, codename__startswith="can_check")
        for permission in experiment_model_permissions:
            user.user_permissions.add(permission)

        self.request.user = user

        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW)
        self.assertEqual(experiment.changes.count(), 2)

        self.assertFalse(experiment.review_science)
        self.assertFalse(experiment.review_engineering)
        self.assertFalse(experiment.review_qa_requested)
        self.assertFalse(experiment.review_intent_to_ship)
        self.assertFalse(experiment.review_bugzilla)
        self.assertFalse(experiment.review_qa)
        self.assertFalse(experiment.review_relman)
        self.assertFalse(experiment.review_advisory)
        self.assertFalse(experiment.review_legal)
        self.assertFalse(experiment.review_ux)
        self.assertFalse(experiment.review_security)
        self.assertFalse(experiment.review_vp)
        self.assertFalse(experiment.review_data_steward)
        self.assertFalse(experiment.review_comms)
        self.assertFalse(experiment.review_impacted_teams)

        data = {
            "review_science": True,
            "review_engineering": True,
            "review_qa_requested": True,
            "review_intent_to_ship": True,
            "review_bugzilla": True,
            "review_qa": True,
            "review_relman": True,
            "review_advisory": True,
            "review_legal": True,
            "review_ux": True,
            "review_security": True,
            "review_vp": True,
            "review_data_steward": True,
            "review_comms": True,
            "review_impacted_teams": True,
        }

        form = ExperimentReviewForm(request=self.request,
                                    data=data,
                                    instance=experiment)

        self.assertTrue(form.is_valid())
        experiment = form.save()

        self.assertTrue(experiment.review_science)
        self.assertTrue(experiment.review_engineering)
        self.assertTrue(experiment.review_qa_requested)
        self.assertTrue(experiment.review_intent_to_ship)
        self.assertTrue(experiment.review_bugzilla)
        self.assertTrue(experiment.review_qa)
        self.assertTrue(experiment.review_relman)
        self.assertTrue(experiment.review_advisory)
        self.assertTrue(experiment.review_legal)
        self.assertTrue(experiment.review_ux)
        self.assertTrue(experiment.review_security)
        self.assertTrue(experiment.review_vp)
        self.assertTrue(experiment.review_data_steward)
        self.assertTrue(experiment.review_comms)
        self.assertTrue(experiment.review_impacted_teams)

        self.assertEqual(experiment.changes.count(), 3)
Пример #14
0
    def test_form_saves_reviews(self):
        experiment = ExperimentFactory.create_with_status(
            Experiment.STATUS_REVIEW
        )

        self.assertFalse(experiment.review_science)
        self.assertFalse(experiment.review_engineering)
        self.assertFalse(experiment.review_qa_requested)
        self.assertFalse(experiment.review_intent_to_ship)
        self.assertFalse(experiment.review_bugzilla)
        self.assertFalse(experiment.review_qa)
        self.assertFalse(experiment.review_relman)
        self.assertFalse(experiment.review_advisory)
        self.assertFalse(experiment.review_legal)
        self.assertFalse(experiment.review_ux)
        self.assertFalse(experiment.review_security)
        self.assertFalse(experiment.review_vp)
        self.assertFalse(experiment.review_data_steward)
        self.assertFalse(experiment.review_comms)
        self.assertFalse(experiment.review_impacted_teams)

        data = {
            "review_science": True,
            "review_engineering": True,
            "review_qa_requested": True,
            "review_intent_to_ship": True,
            "review_bugzilla": True,
            "review_qa": True,
            "review_relman": True,
            "review_advisory": True,
            "review_legal": True,
            "review_ux": True,
            "review_security": True,
            "review_vp": True,
            "review_data_steward": True,
            "review_comms": True,
            "review_impacted_teams": True,
        }

        form = ExperimentReviewForm(
            request=self.request, data=data, instance=experiment
        )

        self.assertTrue(form.is_valid())
        experiment = form.save()

        self.assertTrue(experiment.review_science)
        self.assertTrue(experiment.review_engineering)
        self.assertTrue(experiment.review_qa_requested)
        self.assertTrue(experiment.review_intent_to_ship)
        self.assertTrue(experiment.review_bugzilla)
        self.assertTrue(experiment.review_qa)
        self.assertTrue(experiment.review_relman)
        self.assertTrue(experiment.review_advisory)
        self.assertTrue(experiment.review_legal)
        self.assertTrue(experiment.review_ux)
        self.assertTrue(experiment.review_security)
        self.assertTrue(experiment.review_vp)
        self.assertTrue(experiment.review_data_steward)
        self.assertTrue(experiment.review_comms)
        self.assertTrue(experiment.review_impacted_teams)