Browse Source

Add tests to verify that the default functionality is still given

Peter Justin 7 years ago
parent
commit
16fddcbafc
3 changed files with 116 additions and 0 deletions
  1. 1 0
      tests/conftest.py
  2. 7 0
      tests/fixtures/plugin.py
  3. 108 0
      tests/unit/test_pluginmanager.py

+ 1 - 0
tests/conftest.py

@@ -3,3 +3,4 @@ from tests.fixtures.forum import *  # noqa
 from tests.fixtures.user import *  # noqa
 from tests.fixtures.message import *  # noqa
 from tests.fixtures.settings_fixture import *  # noqa
+from tests.fixtures.plugin import *  # noqa

+ 7 - 0
tests/fixtures/plugin.py

@@ -0,0 +1,7 @@
+import pytest
+from flaskbb.plugins.manager import FlaskBBPluginManager
+
+
+@pytest.fixture
+def plugin_manager():
+    return FlaskBBPluginManager("flaskbb")

+ 108 - 0
tests/unit/test_pluginmanager.py

@@ -0,0 +1,108 @@
+# some tests have been taking from
+# https://github.com/pytest-dev/pluggy/blob/master/testing/test_pluginmanager.py
+# and are licensed under the MIT License.
+import pytest
+
+
+def test_pluginmanager(plugin_manager):
+    """Tests basic pluggy plugin registration."""
+    class A(object):
+        pass
+
+    a1, a2 = A(), A()
+    plugin_manager.register(a1)
+    assert plugin_manager.is_registered(a1)
+    plugin_manager.register(a2, "hello")
+    assert plugin_manager.is_registered(a2)
+
+    with pytest.raises(ValueError):
+        assert plugin_manager.register(a1, internal=True)
+
+    out = plugin_manager.get_plugins()
+    assert a1 in out
+    assert a2 in out
+    assert plugin_manager.get_plugin('hello') == a2
+    assert plugin_manager.unregister(a1) == a1
+    assert not plugin_manager.is_registered(a1)
+
+    out = plugin_manager.list_name_plugin()
+    assert len(out) == 1
+    assert out == [("hello", a2)]
+    assert plugin_manager.list_name() == ["hello"]
+
+
+def test_register_internal(plugin_manager):
+    """Tests registration of internal flaskbb plugins."""
+    class A(object):
+        pass
+
+    a1, a2 = A(), A()
+    plugin_manager.register(a1, "notinternal")
+    plugin_manager.register(a2, "internal", internal=True)
+    assert plugin_manager.is_registered(a2)
+
+    out = plugin_manager.list_name_plugin()
+    assert ('notinternal', a1) in out
+    assert ('internal', a2) not in out
+
+    out_internal = plugin_manager.list_internal_name_plugin()
+    assert ('notinternal', a1) not in out_internal
+    assert ('internal', a2) in out_internal
+
+    assert plugin_manager.unregister(a2) == a2
+    assert not plugin_manager.list_internal_name_plugin()  # should be empty
+
+
+def test_set_blocked(plugin_manager):
+    class A(object):
+        pass
+
+    a1 = A()
+    name = plugin_manager.register(a1)
+    assert plugin_manager.is_registered(a1)
+    assert not plugin_manager.is_blocked(name)
+    plugin_manager.set_blocked(name)
+    assert plugin_manager.is_blocked(name)
+    assert not plugin_manager.is_registered(a1)
+
+    plugin_manager.set_blocked("somename")
+    assert plugin_manager.is_blocked("somename")
+    assert not plugin_manager.register(A(), "somename")
+    plugin_manager.unregister(name="somename")
+    assert plugin_manager.is_blocked("somename")
+
+
+def test_set_blocked_internal(plugin_manager):
+    class A(object):
+        pass
+
+    a1 = A()
+    name = plugin_manager.register(a1, internal=True)
+    assert plugin_manager.is_registered(a1)
+    assert not plugin_manager.is_blocked(name)
+    plugin_manager.set_blocked(name)
+    assert plugin_manager.is_blocked(name)
+    assert not plugin_manager.is_registered(a1)
+
+
+def test_get_internal_plugin(plugin_manager):
+    class A(object):
+        pass
+
+    a1, a2 = A(), A()
+    plugin_manager.register(a1, "notinternal")
+    plugin_manager.register(a2, "internal", internal=True)
+    assert plugin_manager.get_plugin('notinternal') == a1
+    assert plugin_manager.get_plugin('internal') == a2
+
+
+def test_get_internal_name(plugin_manager):
+    class A(object):
+        pass
+
+    a1, a2 = A(), A()
+    plugin_manager.register(a1, "notinternal")
+    plugin_manager.register(a2, "internal", internal=True)
+
+    assert plugin_manager.get_name(a1) == "notinternal"
+    assert plugin_manager.get_name(a2) == "internal"