def test_get_feature_checker_with_init_error(self): """Testing get_feature_checker with initialization error""" set_feature_checker(None) settings.FEATURE_CHECKER = \ 'djblets.features.tests.test_checkers.BadFeatureChecker' with self.assertRaises(ImproperlyConfigured): get_feature_checker()
def test_get_feature_checker_with_invalid_path(self): """Testing get_feature_checker with invalid feature checker path""" set_feature_checker(None) settings.FEATURE_CHECKER = \ 'djblets.features.checkers.SomethingNotHere' with self.assertRaises(ImproperlyConfigured): get_feature_checker()
def is_enabled(self, **kwargs): """Return whether the feature is enabled for the given requirements. This will return a boolean indicating if the feature is enabled. If :py:attr:`level` is :py:attr:`~FeatureLevel.STABLE`, it will always be enabled. Otherwise, if :py:attr:`level` is not :py:attr:`~FeatureLevel.UNAVAILABLE`, the configured feature checker will be used instead. Callers can pass additional keyword arguments to this method, which the feature checker can use when determining if the feature is enabled. For example, a :py:class:`~django.http.HttpRequest` instance, or a :py:class:`~django.contrib.auth.models.User`. Args: **kwargs (dict): Additional keyword arguments to pass to the feature checker. Returns: bool: A boolean value indicating if the feature is enabled for the given conditions. """ if self.level <= FeatureLevel.UNAVAILABLE: return False checker = get_feature_checker() assert checker return (self.level >= checker.min_enabled_level or checker.is_feature_enabled(self.feature_id, **kwargs))
def test_get_feature_checker(self): """Testing get_feature_checker""" set_feature_checker(None) settings.FEATURE_CHECKER = \ 'djblets.features.checkers.SiteConfigFeatureChecker' self.assertEqual(get_feature_checker().__class__, SiteConfigFeatureChecker)
def test_is_enabled_with_stable(self): """Testing Feature.is_enabled with level=STABLE""" class StableFeature(DummyFeature): level = FeatureLevel.STABLE checker = get_feature_checker() feature = StableFeature() self.spy_on(checker.is_feature_enabled) self.assertTrue(feature.is_enabled()) self.assertFalse(checker.is_feature_enabled.spy.called)