mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
347: Added primary_key instance attribute to Param and corresponding kwarg; expanded unit tests for Param.__init__()
This commit is contained in:
@@ -128,7 +128,8 @@ class Param(plugable.ReadOnly):
|
||||
default=None,
|
||||
default_from=None,
|
||||
rules=tuple(),
|
||||
normalize=None
|
||||
normalize=None,
|
||||
primary_key=False,
|
||||
)
|
||||
|
||||
def __init__(self, name, type_=ipa_types.Unicode(), **kw):
|
||||
@@ -155,6 +156,7 @@ class Param(plugable.ReadOnly):
|
||||
self.__normalize = self.__kw['normalize']
|
||||
self.rules = self.__check_type(tuple, 'rules')
|
||||
self.all_rules = (type_.validate,) + self.rules
|
||||
self.primary_key = self.__check_type(bool, 'primary_key')
|
||||
lock(self)
|
||||
|
||||
def __clone__(self, **override):
|
||||
|
||||
@@ -140,6 +140,8 @@ class test_Param(ClassChecker):
|
||||
type_ = ipa_types.Unicode()
|
||||
o = self.cls(name, type_)
|
||||
assert o.__islocked__() is True
|
||||
|
||||
# Test default values
|
||||
assert read_only(o, 'name') is name
|
||||
assert read_only(o, 'type') is type_
|
||||
assert read_only(o, 'doc') == ''
|
||||
@@ -149,12 +151,28 @@ class test_Param(ClassChecker):
|
||||
assert read_only(o, 'default_from') is None
|
||||
assert read_only(o, 'rules') == tuple()
|
||||
assert read_only(o, 'all_rules') == (type_.validate,)
|
||||
assert read_only(o, 'primary_key') is False
|
||||
|
||||
# Check default type_:
|
||||
# Test all kw args:
|
||||
assert self.cls(name, doc='the doc').doc == 'the doc'
|
||||
assert self.cls(name, required=False).required is False
|
||||
assert self.cls(name, multivalue=True).multivalue is True
|
||||
assert self.cls(name, default=u'Hello').default == u'Hello'
|
||||
df = frontend.DefaultFrom(lambda f, l: f + l,
|
||||
'first', 'last',
|
||||
)
|
||||
assert self.cls(name, default_from=df).default_from == df
|
||||
rules = (lambda whatever: 'Not okay!',)
|
||||
o = self.cls(name, rules=rules)
|
||||
assert o.rules is rules
|
||||
assert o.all_rules[1:] == rules
|
||||
assert self.cls(name, primary_key=True).primary_key is True
|
||||
|
||||
# Test default type_:
|
||||
o = self.cls(name)
|
||||
assert isinstance(o.type, ipa_types.Unicode)
|
||||
|
||||
# Check param spec parsing:
|
||||
# Test param spec parsing:
|
||||
o = self.cls('name?')
|
||||
assert o.name == 'name'
|
||||
assert o.required is False
|
||||
|
||||
Reference in New Issue
Block a user