class TestComponentRegistry: """Tests for the component registry.""" def setup_class(self): """Set up the tests.""" self.registry = ComponentRegistry() def test_unregister_when_item_not_registered(self): """Test 'unregister' in case the item is not registered.""" with pytest.raises(ValueError): self.registry.unregister( (PublicId.from_str("author/name:0.1.0"), "component_name")) def test_unregister_by_skill_when_item_not_registered(self): """Test 'unregister_by_skill' in case the item is not registered.""" with pytest.raises( ValueError, match="No component of skill .* present in the registry."): self.registry.unregister_by_skill( PublicId.from_str("author/skill:0.1.0")) def test_setup_with_inactive_skill(self): """Test setup with inactive skill.""" mock_item = MagicMock(name="name", skill_id="skill", context=MagicMock(is_active=False)) with unittest.mock.patch.object(self.registry, "fetch_all", return_value=[mock_item]): with unittest.mock.patch.object(aea.registries.base.logger, "debug") as mock_debug: self.registry.setup() mock_debug.assert_called_with( f"Ignoring setup() of component {mock_item.name} of skill {mock_item.skill_id}, because the skill is not active." )
def setup_class(self): """Set up the tests.""" self.registry = ComponentRegistry()
class TestComponentRegistry: """Tests for the component registry.""" def setup_class(self): """Set up the tests.""" self.registry = ComponentRegistry() def test_ids(self): """Test the getter of all ids.""" assert self.registry.ids() == set() def test_ids_non_empty(self): """Test ids, non-empty case.""" dummy_skill = Skill.from_dir( Path(CUR_PATH, "data", "dummy_skill"), agent_context=MagicMock(agent_name="name"), ) behaviour = next(iter(dummy_skill.behaviours.values())) skill_component_id = (dummy_skill.public_id, behaviour.name) self.registry.register(skill_component_id, behaviour) assert self.registry.ids() == {skill_component_id} self.registry.unregister(skill_component_id) def test_unregister_when_item_not_registered(self): """Test 'unregister' in case the item is not registered.""" with pytest.raises(ValueError): self.registry.unregister( (PublicId.from_str("author/name:0.1.0"), "component_name")) def test_unregister_by_skill_when_item_not_registered(self): """Test 'unregister_by_skill' in case the item is not registered.""" with pytest.raises( ValueError, match="No component of skill .* present in the registry."): self.registry.unregister_by_skill( PublicId.from_str("author/skill:0.1.0")) def test_setup_with_inactive_skill(self): """Test setup with inactive skill.""" mock_item = MagicMock(name="name", skill_id="skill", context=MagicMock(is_active=False)) with unittest.mock.patch.object(self.registry, "fetch_all", return_value=[mock_item]): with unittest.mock.patch.object(self.registry.logger, "debug") as mock_debug: self.registry.setup() mock_debug.assert_called_with( f"Ignoring setup() of component {mock_item.name} of skill {mock_item.skill_id}, because the skill is not active." ) def test_fetch_with_latest_version(self): """Test fetch with public id :latest version.""" item_id_1 = PublicId("author", "package", "0.1.0") item_id_2 = PublicId("author", "package", "0.2.0") item_id_3 = PublicId("author", "package", "0.3.0") item_id_latest = PublicId("author", "package") name = "name" self.registry.register((item_id_1, name), MagicMock(id=1)) self.registry.register((item_id_3, name), MagicMock(id=3)) self.registry.register((item_id_2, name), MagicMock(id=2)) latest = self.registry.fetch((item_id_latest, name)) assert latest is not None assert latest.id == 3 # restore previous state self.registry.unregister((item_id_1, name)) self.registry.unregister((item_id_2, name)) self.registry.unregister((item_id_3, name))