53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
import pytest
|
|
|
|
from ria_toolkit_oss.utils.abstract_attribute import ABCMeta2, abstract_attribute
|
|
|
|
|
|
class InterfaceWithAbstractClassAttributes(metaclass=ABCMeta2):
|
|
_url = abstract_attribute()
|
|
_name = abstract_attribute()
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
@property
|
|
def name(self):
|
|
return self._name
|
|
|
|
|
|
class ClassWithNeitherAbstractAttributeImplemented(InterfaceWithAbstractClassAttributes):
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
|
|
class ClassWithOnlyOneAbstractAttributeImplemented(InterfaceWithAbstractClassAttributes):
|
|
|
|
_url = "https://www.google.com/"
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
|
|
class ClassWithAllAbstractAttributesImplemented(InterfaceWithAbstractClassAttributes):
|
|
_url = "https://www.google.com/"
|
|
_name = "Michael Luciuk"
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
|
|
def test_with_neither_attribute_implemented():
|
|
with pytest.raises(NotImplementedError):
|
|
ClassWithNeitherAbstractAttributeImplemented()
|
|
|
|
|
|
def test_with_one_attribute_missing():
|
|
with pytest.raises(NotImplementedError):
|
|
ClassWithOnlyOneAbstractAttributeImplemented()
|
|
|
|
|
|
def test_with_both_attributes_implemented():
|
|
my_class = ClassWithAllAbstractAttributesImplemented()
|
|
assert my_class.name == "Michael Luciuk"
|