From 196d95918848dba3a129c0d2b31cb83841dbdba1 Mon Sep 17 00:00:00 2001 From: Yann Date: Mon, 29 Aug 2016 14:50:44 +0200 Subject: [PATCH] Writing tests on hooks --- tests/plugin/test_plugin.py | 1 + tests/plugin/tests_hooks.py | 43 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/plugin/tests_hooks.py diff --git a/tests/plugin/test_plugin.py b/tests/plugin/test_plugin.py index 5f8f8f7..421ada2 100644 --- a/tests/plugin/test_plugin.py +++ b/tests/plugin/test_plugin.py @@ -10,6 +10,7 @@ from lodel.plugin.extensions import Extension from lodel.settings.settings import Settings import tests.loader_utils +##@todo write tests about discovering class PluginTestCase(unittest.TestCase): """ Test case grouping all tests on Plugin class init procedures """ diff --git a/tests/plugin/tests_hooks.py b/tests/plugin/tests_hooks.py new file mode 100644 index 0000000..842d0b5 --- /dev/null +++ b/tests/plugin/tests_hooks.py @@ -0,0 +1,43 @@ +#-*- coding: utf-8 -*- + +import unittest +from unittest.mock import MagicMock + +from lodel.plugin.plugins import Plugin, PluginError +from lodel.plugin.hooks import LodelHook + +testhook = 'are_we_sure_that_this_name_is_uniq' + +class HookTestCase(unittest.TestCase): + + def setUp(self): + LodelHook.__reset__() + + def test_registration(self): + """ Testing hook registration using decorator (checking using hook_list() """ + hook_list = LodelHook.hook_list(testhook) + self.assertEqual({}, hook_list) + #hook_registration + @LodelHook(testhook,42) + def funny_fun_test_hook(hook_name, caller, payload): + pass + hook_list = LodelHook.hook_list(testhook) + self.assertEqual({testhook: [(funny_fun_test_hook, 42)]}, hook_list) + + def test_call(self): + """ Testing LodelHook.call_hook() """ + #manual registration using a mock + mmock = MagicMock(return_value = '4242') + mmock.__name__ = 'mmock' + hooking = LodelHook(testhook, 1337) + hooking(mmock) + res = LodelHook.call_hook(testhook, 'Caller', 'payload') + #Check returned value + self.assertEqual( + res, + '4242', + 'Expected value was "4242" but found %s' % res) + #Checks call + mmock.assert_called_once_with(testhook, 'Caller', 'payload') + +