def test_no_components(self, zope_component):
        """Test when there are no components registered."""
        from raptus.article.core.components import Components

        context = mock.sentinel.context
        zope_component.getAdapters.return_value = []

        components = Components(context)
        self.assertEquals(len(components.getComponents()), 0)
        self.assertEquals(len(components.activeComponents()), 0)
    def test_no_active_components(self, zope_component):
        """Test when there are components but none are active."""
        from raptus.article.core.components import Components

        context = mock.sentinel.context
        zope_component.getAdapters.return_value = [
            ('foo', self.makeComponent(active=False)),
            ('bar', self.makeComponent(active=False)),
        ]

        components = Components(context)
        self.assertEquals(len(components.getComponents()), 2)
        self.assertEquals(len(components.activeComponents()), 0)
    def test_mixed_components(self, zope_component):
        """Test when there are both active and inactive components."""
        from raptus.article.core.components import Components

        context = mock.sentinel.context
        zope_component.getAdapters.return_value = [
            ('foo', self.makeComponent(active=False)),
            ('bar', self.makeComponent(active=True)),
            ('gallery', self.makeComponent(active=False)),
        ]

        components = Components(context)
        self.assertEquals(len(components.getComponents()), 3)
        self.assertEquals(len(components.activeComponents()), 1)
        name, comp = components.activeComponents()[0]
        self.assertEquals(name, 'bar')
    def test_all_active_components(self, zope_component):
        """Test when all available components are active."""
        from raptus.article.core.components import Components

        context = mock.sentinel.context
        zope_component.getAdapters.return_value = [
            ('foo', self.makeComponent(active=True)),
            ('bar', self.makeComponent(active=True)),
            ('gallery', self.makeComponent(active=True)),
        ]

        components = Components(context)
        self.assertEquals(len(components.getComponents()), 3)
        self.assertEquals(len(components.activeComponents()), 3)

        active_components = [comp[0] for comp in components.activeComponents()]
        self.assertEquals(active_components, 'foo bar gallery'.split())