mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
231: Added Option2.get_default() method; added corresponding unit tests
This commit is contained in:
parent
bc08225dcd
commit
85f7a08e5d
@ -86,8 +86,13 @@ class DefaultFrom(plugable.ReadOnly):
|
|||||||
|
|
||||||
|
|
||||||
class Option2(plugable.ReadOnly):
|
class Option2(plugable.ReadOnly):
|
||||||
def __init__(self, name, doc, type_, required=False, multivalue=False,
|
def __init__(self, name, doc, type_,
|
||||||
default=None, default_from=None, rules=tuple(), normalize=None):
|
required=False,
|
||||||
|
multivalue=False,
|
||||||
|
default=None,
|
||||||
|
default_from=None,
|
||||||
|
rules=tuple(),
|
||||||
|
normalize=None):
|
||||||
self.name = check_name(name)
|
self.name = check_name(name)
|
||||||
self.doc = check_type(doc, str, 'doc')
|
self.doc = check_type(doc, str, 'doc')
|
||||||
self.type = check_isinstance(type_, ipa_types.Type, 'type_')
|
self.type = check_isinstance(type_, ipa_types.Type, 'type_')
|
||||||
@ -140,6 +145,13 @@ class Option2(plugable.ReadOnly):
|
|||||||
else:
|
else:
|
||||||
self.__validate_scalar(value)
|
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):
|
class Option(plugable.Plugin):
|
||||||
"""
|
"""
|
||||||
|
@ -257,6 +257,40 @@ class test_Option2(ClassChecker):
|
|||||||
assert e.value is fail_type
|
assert e.value is fail_type
|
||||||
assert e.error == 'Must be a string'
|
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):
|
class test_Option(ClassChecker):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user