Source code for envisage.tests.test_service

# (C) Copyright 2007-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
""" Tests for the 'Service' trait type. """

# Standard library imports.
import unittest

# Enthought library imports.
from traits.api import HasTraits, Instance, TraitError

from envisage.api import Plugin, Service
from envisage.tests.support import SimpleApplication


[docs]class ServiceTestCase(unittest.TestCase): """Tests for the 'Service' trait type."""
[docs] def test_service_trait_type(self): """service trait type""" class Foo(HasTraits): pass class PluginA(Plugin): id = "A" foo = Instance(Foo, (), service=True) class PluginB(Plugin): id = "B" foo = Service(Foo) a = PluginA() b = PluginB() application = SimpleApplication(plugins=[a, b]) application.start() # Make sure the services were registered. self.assertEqual(a.foo, b.foo) # Stop the application. application.stop() # Make sure the service was unregistered. self.assertEqual(None, b.foo) # You can't set service traits! with self.assertRaises(TraitError): setattr(b, "foo", "bogus")
[docs] def test_service_trait_type_with_no_service_registry(self): """service trait type with no service registry""" class Foo(HasTraits): pass class Bar(HasTraits): foo = Service(Foo) # We should get an exception because the object does not have an # 'service_registry' trait. b = Bar() with self.assertRaises(ValueError): getattr(b, "foo")
[docs] def test_service_str_representation(self): """test the string representation of the service""" class Foo(HasTraits): pass service_repr = "Service(protocol={!r})" service = Service(Foo) self.assertEqual(service_repr.format(Foo), str(service)) self.assertEqual(service_repr.format(Foo), repr(service))