Source code for envisage.tests.test_extension_registry_mixin

# (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!
"""
Base set of tests for extension registry and its subclasses wrapped in a
mixin class.
"""

from traits.api import List

# Enthought library imports.
from envisage.api import ExtensionPoint, UnknownExtensionPoint


[docs]class ExtensionRegistryTestMixin: """Base set of tests for extension registry and its subclasses. Test cases inherriting from this mixin should define a setUp method that defines self.registry as an instance of ExtensionPointRegistry. """
[docs] def test_empty_registry(self): """empty registry""" registry = self.registry # Make sure there are no extensions. extensions = registry.get_extensions("my.ep") self.assertEqual(0, len(extensions)) # Make sure there are no extension points. extension_points = registry.get_extension_points() self.assertEqual(0, len(extension_points))
[docs] def test_add_extension_point(self): """add extension point""" registry = self.registry # Add an extension *point*. registry.add_extension_point(self.create_extension_point("my.ep")) # Make sure there's NO extensions. extensions = registry.get_extensions("my.ep") self.assertEqual(0, len(extensions)) # Make sure there's one and only one extension point. extension_points = registry.get_extension_points() self.assertEqual(1, len(extension_points)) self.assertEqual("my.ep", extension_points[0].id)
[docs] def test_get_extension_point(self): """get extension point""" registry = self.registry # Add an extension *point*. registry.add_extension_point(self.create_extension_point("my.ep")) # Make sure we can get it. extension_point = registry.get_extension_point("my.ep") self.assertNotEqual(None, extension_point) self.assertEqual("my.ep", extension_point.id)
[docs] def test_get_extension_point_return_none_if_not_found(self): """get extension point return None if id is not found.""" self.assertIsNone(self.registry.get_extension_point("i.do.not.exist"))
[docs] def test_get_extensions_mutation_no_effect_if_undefined(self): """test one cannot mutate the registry by mutating the list.""" # The extension point with id "my.ep" has not been defined extensions = self.registry.get_extensions("my.ep") # when extensions.append([[1, 2]]) # then # the registry is not affected. self.assertEqual(self.registry.get_extensions("my.ep"), [])
[docs] def test_remove_empty_extension_point(self): """remove empty_extension point""" registry = self.registry # Add an extension point... registry.add_extension_point(self.create_extension_point("my.ep")) # ...and remove it! registry.remove_extension_point("my.ep") # Make sure there are no extension points. extension_points = registry.get_extension_points() self.assertEqual(0, len(extension_points))
[docs] def test_remove_non_existent_extension_point(self): """remove non existent extension point""" registry = self.registry with self.assertRaises(UnknownExtensionPoint): registry.remove_extension_point("my.ep")
[docs] def test_remove_non_existent_listener(self): """remove non existent listener""" registry = self.registry def listener(registry, extension_point, added, removed, index): """Called when an extension point has changed.""" self.listener_called = (registry, extension_point, added, removed) with self.assertRaises(ValueError): registry.remove_extension_point_listener(listener)
[docs] def create_extension_point(self, id, trait_type=List, desc=""): """Create an extension point.""" return ExtensionPoint(id=id, trait_type=trait_type, desc=desc)