mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-01-23 14:53:12 -06:00
5: Fleshed out base.Named, added corresponding unit tests
This commit is contained in:
parent
ef7594ffe1
commit
e8257ad531
@ -26,18 +26,31 @@ import exceptions
|
|||||||
|
|
||||||
|
|
||||||
class Named(object):
|
class Named(object):
|
||||||
#def __init__(self, prefix):
|
prefix = None
|
||||||
# clsname = self.__class__.__name__
|
|
||||||
|
@classmethod
|
||||||
|
def clsname(cls):
|
||||||
|
return cls.__name__
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
clsname = self.clsname()
|
||||||
|
assert type(self.prefix) is str
|
||||||
|
prefix = self.prefix + '_'
|
||||||
|
if not clsname.startswith(prefix):
|
||||||
|
raise exceptions.PrefixError(clsname, prefix)
|
||||||
|
self.__name = clsname[len(prefix):]
|
||||||
|
self.__name_cli = self.__name.replace('_', '-')
|
||||||
|
|
||||||
def __get_name(self):
|
def __get_name(self):
|
||||||
return self.__class__.__name__
|
return self.__name
|
||||||
name = property(__get_name)
|
name = property(__get_name)
|
||||||
|
|
||||||
def __get_cli_name(self):
|
def __get_name_cli(self):
|
||||||
return self.name.replace('_', '-')
|
return self.__name_cli
|
||||||
cli_name = property(__get_cli_name)
|
name_cli = property(__get_name_cli)
|
||||||
|
|
||||||
|
|
||||||
class Command(Named):
|
class Command(object):
|
||||||
|
|
||||||
def normalize(self, kw):
|
def normalize(self, kw):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -55,3 +55,7 @@ class OverrideError(IPAError):
|
|||||||
|
|
||||||
class RegistrationError(IPAError):
|
class RegistrationError(IPAError):
|
||||||
msg = '%r is not a subclass of %s'
|
msg = '%r is not a subclass of %s'
|
||||||
|
|
||||||
|
|
||||||
|
class PrefixError(IPAError):
|
||||||
|
msg = 'class name %r must start with %r'
|
||||||
|
@ -40,6 +40,77 @@ def read_only(obj, name):
|
|||||||
return getattr(obj, name)
|
return getattr(obj, name)
|
||||||
|
|
||||||
|
|
||||||
|
class ClassChecker(object):
|
||||||
|
cls = None # Override this is subclasses
|
||||||
|
|
||||||
|
def new(self, *args, **kw):
|
||||||
|
return self.cls(*args, **kw)
|
||||||
|
|
||||||
|
def args(self):
|
||||||
|
return []
|
||||||
|
|
||||||
|
def kw(self):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def std(self):
|
||||||
|
return self.new(*self.args(), **self.kw())
|
||||||
|
|
||||||
|
|
||||||
|
class test_Named:
|
||||||
|
"""
|
||||||
|
Unit tests for `Named` class.
|
||||||
|
"""
|
||||||
|
cls = base.Named
|
||||||
|
|
||||||
|
def new(self):
|
||||||
|
class tst_verb_object(self.cls):
|
||||||
|
prefix = 'tst'
|
||||||
|
return tst_verb_object()
|
||||||
|
|
||||||
|
def test_prefix(self):
|
||||||
|
"""
|
||||||
|
Test prefix exception.
|
||||||
|
"""
|
||||||
|
# Test Example class:
|
||||||
|
class Example(self.cls):
|
||||||
|
prefix = 'eg'
|
||||||
|
|
||||||
|
# Two test subclasses:
|
||||||
|
class do_stuff(Example):
|
||||||
|
pass
|
||||||
|
class eg_do_stuff(Example):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Test that PrefixError is raised with incorrectly named subclass:
|
||||||
|
raised = False
|
||||||
|
try:
|
||||||
|
do_stuff()
|
||||||
|
except exceptions.PrefixError:
|
||||||
|
raised = True
|
||||||
|
assert raised
|
||||||
|
|
||||||
|
# Test that correctly named subclass works:
|
||||||
|
eg_do_stuff()
|
||||||
|
|
||||||
|
def test_name(self):
|
||||||
|
"""
|
||||||
|
Test Named.name property.
|
||||||
|
"""
|
||||||
|
obj = self.new()
|
||||||
|
assert read_only(obj, 'name') == 'verb_object'
|
||||||
|
|
||||||
|
def test_name_cli(self):
|
||||||
|
"""
|
||||||
|
Test Named.name_cli property.
|
||||||
|
"""
|
||||||
|
obj = self.new()
|
||||||
|
assert read_only(obj, 'name_cli') == 'verb-object'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class test_NameSpace:
|
class test_NameSpace:
|
||||||
"""
|
"""
|
||||||
Unit tests for `NameSpace` class.
|
Unit tests for `NameSpace` class.
|
||||||
|
Loading…
Reference in New Issue
Block a user