Skip to content

[TEST] Tests d'intégration inter-plugin avec mock Narractive #24

@imagodata

Description

@imagodata

User Story

En tant que développeur,
je veux des tests d'intégration qui simulent un vrai appel depuis un plugin Narractive mocké,
afin de valider le protocole de communication bout-en-bout sans avoir à installer Narractive.

Approche

Créer un MockNarractivePlugin qui reproduit le comportement de l'adapter Narractive et tester l'interaction complète.

Plan de tests

# tests/test_public_api/test_integration_inter_plugin.py

class MockNarractivePlugin:
    """Simulacre du plugin Narractive pour les tests d'intégration."""
    
    def __init__(self):
        self.adapter = FilterMateAdapter()
        self.received_signals = []
    
    def connect_to_filtermate(self):
        api = qgis.utils.plugins["filter_mate"].get_public_api()
        api.filter_applied.connect(self._on_filter_applied)
        api.filter_cleared.connect(self._on_filter_cleared)
    
    def _on_filter_applied(self, layer_name, expr):
        self.received_signals.append(("applied", layer_name, expr))


class TestInterPluginIntegration:
    
    def test_narractive_can_access_filtermate_api(self, mock_qgis_plugins):
        """Narractive accède à l'API via qgis.utils.plugins."""
    
    def test_filter_applied_signal_received_by_narractive(self, qtbot):
        """Narractive reçoit le signal quand FilterMate applique un filtre."""
    
    def test_narration_step_applies_multiple_filters(self):
        """Un step avec 3 filtres applique bien 3 filtres sur 3 couches."""
    
    def test_step_transition_clears_previous_and_applies_new(self):
        """Transition step N → step N+1 : clear step N, apply step N+1."""
    
    def test_narractive_handles_filtermate_unload_gracefully(self):
        """Narractive ne plante pas si FilterMate est déchargé pendant une narration."""
    
    def test_version_compatibility_check(self):
        """Narractive vérifie la compatibilité de version avant d'utiliser l'API."""
    
    def test_filtermate_absent_no_crash(self, mock_qgis_plugins_empty):
        """FilterMate absent : Narractive continue sans crash."""

Critères d'acceptance

Estimation

Points : 5 | Priorité : Haute | Epic : #22

Liens

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions