diff --git a/experimenter/experimenter/experiments/models.py b/experimenter/experimenter/experiments/models.py index fc3af6a4a..5b36b3c49 100644 --- a/experimenter/experimenter/experiments/models.py +++ b/experimenter/experimenter/experiments/models.py @@ -2735,7 +2735,9 @@ def audience_overlap_warnings(self): "entries": entries, "self_issues": self_issues, "variant": "warning", - "learn_more_link": NimbusUIConstants.AUDIENCE_OVERLAP_WARNING, + "learn_more_link": ( + NimbusUIConstants.AUDIENCE_OVERLAP_WARNING if entries else None + ), } ] diff --git a/experimenter/experimenter/experiments/tests/test_models.py b/experimenter/experimenter/experiments/tests/test_models.py index 7607ea394..ee42c7957 100644 --- a/experimenter/experimenter/experiments/tests/test_models.py +++ b/experimenter/experimenter/experiments/tests/test_models.py @@ -3269,6 +3269,9 @@ def test_audience_overlap_warnings_aggregates_collision_warnings(self): warning = warnings[0] self.assertIn("WARNING:", warning["text"]) self.assertEqual(warning["variant"], "warning") + self.assertEqual( + warning["learn_more_link"], NimbusUIConstants.AUDIENCE_OVERLAP_WARNING + ) entry_slugs = [e["slug"] for e in warning["entries"]] self.assertEqual( entry_slugs, @@ -3307,12 +3310,39 @@ def test_audience_overlap_warnings_combines_collisions_and_self_issues(self): self.assertEqual(len(warnings), 1) warning = warnings[0] self.assertEqual([e["slug"] for e in warning["entries"]], [live.slug]) + self.assertEqual( + warning["learn_more_link"], NimbusUIConstants.AUDIENCE_OVERLAP_WARNING + ) labels = [issue["label"] for issue in warning["self_issues"]] self.assertIn("Targeting multiple channels", labels) self.assertIn( "Issues that may affect enrollment for this experiment", warning["text"] ) + def test_audience_overlap_warnings_self_issues_only_omits_learn_more_link(self): + draft = NimbusExperimentFactory.create_with_lifecycle( + NimbusExperimentFactory.Lifecycles.CREATED, + slug="self-issues-only-draft", + is_rollout=False, + application=NimbusExperiment.Application.DESKTOP, + channel=NimbusExperiment.Channel.NO_CHANNEL, + channels=[NimbusExperiment.Channel.NIGHTLY, NimbusExperiment.Channel.RELEASE], + firefox_min_version=NimbusExperiment.Version.FIREFOX_120, + feature_configs=[ + NimbusFeatureConfigFactory.create( + slug="self-issues-only-feature", + application=NimbusExperiment.Application.DESKTOP, + ) + ], + ) + + warnings = draft.audience_overlap_warnings + self.assertEqual(len(warnings), 1) + warning = warnings[0] + self.assertEqual(warning["entries"], []) + self.assertNotEqual(warning["self_issues"], []) + self.assertIsNone(warning["learn_more_link"]) + def test_collision_warnings_no_min_version_treats_feature_as_contesting(self): # Without firefox_min_version we can't resolve coenrollment schemas, so the # feature is treated as contesting (collision still surfaces).