# coding=utf-8
"""
(c) 2015-2018 - Copyright Red Hat Inc
Authors:
Slavek Kabrda <bkabrda@redhat.com>
"""
from __future__ import unicode_literals
__requires__ = ['SQLAlchemy >= 0.8']
import pkg_resources
import os
import sys
from mock import patch
sys.path.insert(0, os.path.join(os.path.dirname(
os.path.abspath(__file__)), '..'))
import pagure.hooks
import pagure.lib.plugins
import tests
class EnabledForAll(pagure.hooks.BaseHook):
name = "EnabledForAll"
@classmethod
def is_enabled_for(cls, project):
return True
class DisabledForAll(pagure.hooks.BaseHook):
name = "DisabledForAll"
# disabled for all is the default
class PagureLibtests_plugins(tests.Modeltests):
"""
Test the pagure.lib.plugins module
"""
maxDiff = None
@patch("pagure.lib.plugins.load")
def test_plugin_is_enabled_for(self, load):
""" Test the is_enabled_for method of plugins is properly
handled by pagure.lib.plugins.get_enabled_plugins.
"""
tests.create_projects(self.session)
project = pagure.lib.query._get_project(self.session, "test")
load.return_value = [EnabledForAll]
self.assertEqual(
pagure.lib.plugins.get_enabled_plugins(project),
[(EnabledForAll, None)]
)
load.return_value = [DisabledForAll]
self.assertEqual(
pagure.lib.plugins.get_enabled_plugins(project),
[]
)
@patch("pagure.lib.plugins.load")
def test_get_plugin_names(self, load):
""" Test the get_plugin_names method with plugins that don't
have backref.
"""
load.return_value = [EnabledForAll]
self.assertEqual(pagure.lib.plugins.get_plugin_names(), [])
self.assertEqual(
pagure.lib.plugins.get_plugin_names(without_backref=True),
['EnabledForAll']
)