1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """Tests for cement.core.interface."""
- from cement.core import exc, interface, output, handler, meta
- from cement.utils import test
- class TestInterface(interface.Interface):
- class IMeta:
- label = 'test'
- class TestHandler(handler.CementBaseHandler):
- class Meta:
- interface = TestInterface
- label = 'test'
-
- class TestHandler2(handler.CementBaseHandler):
- class Meta:
- interface = output.IOutput
- label = 'test2'
- class TestHandler3():
- pass
-
- class InterfaceTestCase(test.CementCoreTestCase):
- def setUp(self):
- self.app = self.make_app()
-
- @test.raises(exc.InterfaceError)
- def test_interface_class(self):
- try:
- i = interface.Interface()
- except exc.InterfaceError as e:
- self.eq(e.msg, "Interfaces can not be used directly.")
- raise
- def test_attribute_class(self):
- i = interface.Attribute('Test attribute')
- self.eq(i.__repr__(), "<interface.Attribute - 'Test attribute'>")
- def test_validator(self):
- interface.validate(TestInterface, TestHandler(), [])
-
- @test.raises(exc.InterfaceError)
- def test_validate_bad_interface(self):
- han = TestHandler2()
- try:
- interface.validate(TestInterface, han, [])
- except exc.InterfaceError as e:
- self.eq(e.msg, "%s does not implement %s." % (han, TestInterface))
- raise
-
- @test.raises(exc.InterfaceError)
- def test_validate_bad_interface_no_meta(self):
- han = TestHandler3()
- try:
- interface.validate(TestInterface, han, [])
- except exc.InterfaceError as e:
- self.eq(e.msg, "Invalid or missing: ['_meta'] in %s" % han)
- raise
- @test.raises(exc.InterfaceError)
- def test_validate_bad_interface_missing_meta(self):
- han = TestHandler()
- try:
- interface.validate(TestInterface, han, [], ['missing_meta'])
- except exc.InterfaceError as e:
- self.eq(e.msg, "Invalid or missing: ['_meta.missing_meta'] in %s" % han)
- raise
|