Пример #1
0
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."
                )
Пример #2
0
 def setup_class(self):
     """Set up the tests."""
     self.registry = ComponentRegistry()
Пример #3
0
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))