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)
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)
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)
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)}, )
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()
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)
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)
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)