Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
    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))
Пример #4
0
    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))
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)