mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-01-23 06:43:13 -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):
|
||||
#def __init__(self, prefix):
|
||||
# clsname = self.__class__.__name__
|
||||
prefix = None
|
||||
|
||||
@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):
|
||||
return self.__class__.__name__
|
||||
return self.__name
|
||||
name = property(__get_name)
|
||||
|
||||
def __get_cli_name(self):
|
||||
return self.name.replace('_', '-')
|
||||
cli_name = property(__get_cli_name)
|
||||
def __get_name_cli(self):
|
||||
return self.__name_cli
|
||||
name_cli = property(__get_name_cli)
|
||||
|
||||
|
||||
class Command(Named):
|
||||
class Command(object):
|
||||
|
||||
def normalize(self, kw):
|
||||
raise NotImplementedError
|
||||
|
@ -55,3 +55,7 @@ class OverrideError(IPAError):
|
||||
|
||||
class RegistrationError(IPAError):
|
||||
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)
|
||||
|
||||
|
||||
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:
|
||||
"""
|
||||
Unit tests for `NameSpace` class.
|
||||
|
Loading…
Reference in New Issue
Block a user