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