fix: TypeError in toggle state report view

We were attempting to add course overrides twice to objects returned in
the toggle state report view. This was causing a TypeError (and thus a
500 error) because the second time, we were attempting to add entries to
an incorrect object.

This issue was not caught by unit tests because we were not testing the
view with WaffleFlagCourseOverride objects. This commit adds a unit test
to prevent future errors.

This is another fix for PR #27108.
This commit is contained in:
Régis Behmo
2021-03-23 20:31:55 +01:00
parent da30f24108
commit dae4403ba7
2 changed files with 10 additions and 1 deletions

View File

@@ -37,6 +37,16 @@ class ToggleStateViewTests(TestCase): # lint-amnesty, pylint: disable=missing-c
"class": "SettingDictToggle",
} in response.data["django_settings"]
def test_response_with_course_override(self):
models.WaffleFlagCourseOverrideModel.objects.create(waffle_flag="my.flag", enabled=True)
response = get_toggle_state_response()
assert response.data["waffle_flags"]
assert "my.flag" == response.data["waffle_flags"][0]["name"]
assert response.data["waffle_flags"][0]["course_overrides"]
assert "None" == response.data["waffle_flags"][0]["course_overrides"][0]["course_id"]
assert "on" == response.data["waffle_flags"][0]["course_overrides"][0]["force"]
assert "both" == response.data["waffle_flags"][0]["computed_status"]
def test_course_overrides(self):
models.WaffleFlagCourseOverrideModel.objects.create(waffle_flag="my.flag", enabled=True)
course_overrides = {}

View File

@@ -63,7 +63,6 @@ class ToggleStateView(views.APIView):
Expose toggle state report dict as a view.
"""
report = CourseOverrideToggleStateReport().as_dict()
_add_waffle_flag_course_override_state(report["waffle_flags"])
return Response(report)