From 8a64f4ff1f6602363b83356981dbc4af57c1fa0b Mon Sep 17 00:00:00 2001 From: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com> Date: Thu, 23 Jan 2025 17:09:36 -0500 Subject: [PATCH] bug(nimbus): handle None in results data (#12101) Becuase * We recently added the show results url link on the landing page * That involves checking the contents of the results data payload * In old experiments, some keys unexpected contain null/None values * The method to check did not handle this case and was raising 500 This commit * Adds a test case for null values in the results data payload * Handles the null case in the show results data method fixes #12094 --- experimenter/experimenter/experiments/models.py | 2 +- experimenter/experimenter/experiments/tests/test_models.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/experimenter/experimenter/experiments/models.py b/experimenter/experimenter/experiments/models.py index e78a765a33..2db7c08365 100644 --- a/experimenter/experimenter/experiments/models.py +++ b/experimenter/experimenter/experiments/models.py @@ -1212,7 +1212,7 @@ def has_displayable_results(self): if self.results_data and "v3" in self.results_data: results_data = self.results_data["v3"] for window in ["overall", "weekly"]: - if window in results_data: + if results_data.get(window): enrollments = results_data[window].get("enrollments", {}).get("all") if enrollments is not None: return True diff --git a/experimenter/experimenter/experiments/tests/test_models.py b/experimenter/experimenter/experiments/tests/test_models.py index 7a31e69f1d..806ccf63fc 100644 --- a/experimenter/experimenter/experiments/tests/test_models.py +++ b/experimenter/experimenter/experiments/tests/test_models.py @@ -2458,6 +2458,7 @@ def test_has_displayable_results_true(self, results_data): ({"v3": {"weekly": {"enrollments": {}}}},), ({"v3": {"overall": {"enrollments": {"all": None}}}},), ({"v3": {"weekly": {"enrollments": {"all": None}}}},), + ({"v3": {"overall": None}},), ] ) def test_has_displayable_results_false(self, results_data):