From c3bf5ad8579e6f09aba558a68de947b2be398619 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Tue, 5 Aug 2008 03:21:52 +0000 Subject: 43: Fleshed out new plugable.API class; added corresponding unit tests --- ipalib/tests/test_plugable.py | 67 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'ipalib/tests/test_plugable.py') diff --git a/ipalib/tests/test_plugable.py b/ipalib/tests/test_plugable.py index a6f1e7cd..f5d469af 100644 --- a/ipalib/tests/test_plugable.py +++ b/ipalib/tests/test_plugable.py @@ -309,3 +309,70 @@ def test_NameSpace(): def test_API(): assert issubclass(plugable.API, plugable.ReadOnly) + + # Setup the test plugins, create the Registrar: + class ExampleProxy(plugable.Proxy): + __slots__ = ['method'] + + class base0(plugable.Plugin): + proxy = ExampleProxy + + def method(self, n): + return n + + class base1(plugable.Plugin): + proxy = ExampleProxy + + def method(self, n): + return n + 1 + + r = plugable.Registrar(base0, base1) + + class base0_plugin0(base0): + pass + r(base0_plugin0) + + class base0_plugin1(base0): + pass + r(base0_plugin1) + + class base0_plugin2(base0): + pass + r(base0_plugin2) + + class base1_plugin0(base1): + pass + r(base1_plugin0) + + class base1_plugin1(base1): + pass + r(base1_plugin1) + + class base1_plugin2(base1): + pass + r(base1_plugin2) + + registrants = tuple(r) + + # Test API instance: + api = plugable.API(r) + + def get_base(b): + return 'base%d' % b + + def get_plugin(b, p): + return 'base%d_plugin%d' % (b, p) + + for b in xrange(2): + base_name = get_base(b) + ns = getattr(api, base_name) + assert isinstance(ns, plugable.NameSpace) + assert read_only(api, base_name) is ns + assert len(ns) == 3 + for p in xrange(3): + plugin_name = get_plugin(b, p) + proxy = ns[plugin_name] + assert isinstance(proxy, ExampleProxy) + assert proxy.name == plugin_name + assert read_only(ns, plugin_name) is proxy + assert read_only(proxy, 'method')(7) == 7 + b -- cgit