|
6 | 6 |
|
7 | 7 | import pytest |
8 | 8 |
|
| 9 | +from app.core.plugin import MessageFilterPlugin, PluginMetadata, PluginType |
9 | 10 | from app.models import ( |
10 | 11 | Campaign, |
11 | 12 | CampaignStatus, |
@@ -139,3 +140,37 @@ def test_start_campaign_returns_false_when_cannot_start(self, campaign_manager): |
139 | 140 | campaign = _create_campaign(total_recipients=0, status=CampaignStatus.DRAFT) |
140 | 141 |
|
141 | 142 | assert campaign_manager.start_campaign(campaign.id) is False |
| 143 | + |
| 144 | + def test_apply_message_filters_uses_recipient_type(self, campaign_manager): |
| 145 | + recipient = _create_recipient(username="self_account") |
| 146 | + captured_recipient_data = {} |
| 147 | + |
| 148 | + class CapturingFilterPlugin(MessageFilterPlugin): |
| 149 | + @property |
| 150 | + def metadata(self) -> PluginMetadata: |
| 151 | + return PluginMetadata( |
| 152 | + name="Capturing Filter", |
| 153 | + version="1.0.0", |
| 154 | + description="Captures recipient payload in tests", |
| 155 | + author="tests", |
| 156 | + plugin_type=PluginType.FILTER, |
| 157 | + ) |
| 158 | + |
| 159 | + def filter_message(self, message, recipient_data): |
| 160 | + captured_recipient_data.update(recipient_data) |
| 161 | + return message |
| 162 | + |
| 163 | + plugin = CapturingFilterPlugin(api=MagicMock()) |
| 164 | + plugin_info = MagicMock() |
| 165 | + plugin_info.metadata.name = "Capturing Filter" |
| 166 | + plugin_info.metadata.version = "1.0.0" |
| 167 | + |
| 168 | + campaign_manager.plugin_manager.list_enabled_plugins = MagicMock( |
| 169 | + return_value=[plugin_info] |
| 170 | + ) |
| 171 | + campaign_manager.plugin_manager.get_plugin = MagicMock(return_value=plugin) |
| 172 | + |
| 173 | + filtered_message = campaign_manager._apply_message_filters("Hello", recipient) |
| 174 | + |
| 175 | + assert filtered_message == "Hello" |
| 176 | + assert captured_recipient_data["type"] == RecipientType.USER.value |
0 commit comments