diff --git a/openedx/core/djangoapps/programs/tests/test_utils.py b/openedx/core/djangoapps/programs/tests/test_utils.py index 9a8b6d32e9..283dbdb7ff 100644 --- a/openedx/core/djangoapps/programs/tests/test_utils.py +++ b/openedx/core/djangoapps/programs/tests/test_utils.py @@ -1542,10 +1542,7 @@ class TestProgramMarketingDataExtender(ModuleStoreTestCase): self.assertEqual(data['discount_data'], mock_discount_data) @httpretty.activate - @override_switch("{}.{}".format( - PROGRAMS_WAFFLE_SWITCH_NAMESPACE.name, - ALWAYS_CALCULATE_PROGRAM_PRICE_AS_ANONYMOUS_USER.switch_name - ), active=True) + @override_switch(ALWAYS_CALCULATE_PROGRAM_PRICE_AS_ANONYMOUS_USER.namespaced_switch_name, active=True) def test_fetching_program_price_when_forced_as_anonymous_user(self): """ When all users are forced as anonymous, all requests to calculate the program diff --git a/openedx/core/djangoapps/waffle_utils/__init__.py b/openedx/core/djangoapps/waffle_utils/__init__.py index 0630fb8acc..fdf48b3bb6 100644 --- a/openedx/core/djangoapps/waffle_utils/__init__.py +++ b/openedx/core/djangoapps/waffle_utils/__init__.py @@ -200,6 +200,13 @@ class WaffleSwitch(object): self.waffle_namespace = waffle_namespace self.switch_name = switch_name + @property + def namespaced_switch_name(self): + """ + Returns the fully namespaced switch name. + """ + return self.waffle_namespace._namespaced_name(self.switch_name) # pylint: disable=protected-access + def is_enabled(self): return self.waffle_namespace.is_enabled(self.switch_name) diff --git a/openedx/core/djangoapps/waffle_utils/tests/test_init.py b/openedx/core/djangoapps/waffle_utils/tests/test_init.py index 5568ce8afc..56ca688af3 100644 --- a/openedx/core/djangoapps/waffle_utils/tests/test_init.py +++ b/openedx/core/djangoapps/waffle_utils/tests/test_init.py @@ -10,7 +10,7 @@ from opaque_keys.edx.keys import CourseKey from openedx.core.djangoapps.request_cache.middleware import RequestCache from waffle.testutils import override_flag -from .. import CourseWaffleFlag, WaffleFlagNamespace +from .. import CourseWaffleFlag, WaffleFlagNamespace, WaffleSwitchNamespace, WaffleSwitch from ..models import WaffleFlagCourseOverrideModel @@ -112,3 +112,22 @@ class TestCourseWaffleFlag(TestCase): flag_undefined_default=data['flag_undefined_default'] ) self.assertEqual(test_course_flag.is_enabled(self.TEST_COURSE_KEY), data['result']) + + +class TestWaffleSwitch(TestCase): + """ + Tests the WaffleSwitch. + """ + + NAMESPACE_NAME = "test_namespace" + WAFFLE_SWITCH_NAME = "test_switch_name" + TEST_NAMESPACE = WaffleSwitchNamespace(NAMESPACE_NAME) + WAFFLE_SWITCH = WaffleSwitch(TEST_NAMESPACE, WAFFLE_SWITCH_NAME) + + def test_namespaced_switch_name(self): + """ + Verify namespaced_switch_name returns the correct namespace switch name + """ + expected = self.NAMESPACE_NAME + "." + self.WAFFLE_SWITCH_NAME + actual = self.WAFFLE_SWITCH.namespaced_switch_name + self.assertEqual(actual, expected)