diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-02 19:05:10 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-02 19:05:10 +0000 |
commit | 85f7a08e5d11b3d09b6c36b7a683f39846f8821e (patch) | |
tree | 726374f19d48004526607e644d66d9d9767704be /ipalib | |
parent | bc08225dcd719eba0134e8a59ea7932fdea8513d (diff) | |
download | freeipa.git-85f7a08e5d11b3d09b6c36b7a683f39846f8821e.tar.gz freeipa.git-85f7a08e5d11b3d09b6c36b7a683f39846f8821e.tar.xz freeipa.git-85f7a08e5d11b3d09b6c36b7a683f39846f8821e.zip |
231: Added Option2.get_default() method; added corresponding unit tests
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/public.py | 16 | ||||
-rw-r--r-- | ipalib/tests/test_public.py | 34 |
2 files changed, 48 insertions, 2 deletions
diff --git a/ipalib/public.py b/ipalib/public.py index ea9a06a3..cf95af7c 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -86,8 +86,13 @@ class DefaultFrom(plugable.ReadOnly): class Option2(plugable.ReadOnly): - def __init__(self, name, doc, type_, required=False, multivalue=False, - default=None, default_from=None, rules=tuple(), normalize=None): + def __init__(self, name, doc, type_, + required=False, + multivalue=False, + default=None, + default_from=None, + rules=tuple(), + normalize=None): self.name = check_name(name) self.doc = check_type(doc, str, 'doc') self.type = check_isinstance(type_, ipa_types.Type, 'type_') @@ -140,6 +145,13 @@ class Option2(plugable.ReadOnly): else: self.__validate_scalar(value) + def get_default(self, **kw): + if self.default_from is not None: + default = self.default_from(**kw) + if default is not None: + return self.convert(default) + return self.convert(self.default) + class Option(plugable.Plugin): """ diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py index 84be3c6d..56da573a 100644 --- a/ipalib/tests/test_public.py +++ b/ipalib/tests/test_public.py @@ -257,6 +257,40 @@ class test_Option2(ClassChecker): assert e.value is fail_type assert e.error == 'Must be a string' + def test_get_default(self): + """ + Tests the `public.Option2.get_default` method. + """ + name = 'greeting' + doc = 'User greeting' + type_ = ipa_types.Unicode() + default = u'Hello, world!' + default_from = public.DefaultFrom( + lambda first, last: u'Hello, %s %s!' % (first, last), + 'first', 'last' + ) + + # Scenario 1: multivalue=False + o = self.cls(name, doc, type_, + default=default, + default_from=default_from, + ) + assert o.default is default + assert o.default_from is default_from + assert o.get_default() == default + assert o.get_default(first='John', last='Doe') == 'Hello, John Doe!' + + # Scenario 2: multivalue=True + o = self.cls(name, doc, type_, + default=default, + default_from=default_from, + multivalue=True, + ) + assert o.default is default + assert o.default_from is default_from + assert o.get_default() == (default,) + assert o.get_default(first='John', last='Doe') == ('Hello, John Doe!',) + class test_Option(ClassChecker): """ |