@@ -161,3 +161,78 @@ def test_get_signal_stats_not_found(session, entity_type):
161
161
assert signal_data .num_signal_instances_snoozed == 0
162
162
assert signal_data .num_snoozes_active == 0
163
163
assert signal_data .num_snoozes_expired == 0
164
+
165
+
166
+ def test_get_signal_stats_with_signal_id_filter (session , entity , entity_type ):
167
+ """Test get_signal_stats with a specific signal ID filter."""
168
+ from dispatch .signal .service import get_signal_stats
169
+ from dispatch .signal .models import Signal , SignalInstance
170
+
171
+ # Setup: Create two different signals
172
+ signal1 = Signal (name = "Test Signal 1" , variant = "test-signal-1" , project_id = 1 )
173
+ signal2 = Signal (name = "Test Signal 2" , variant = "test-signal-2" , project_id = 1 )
174
+ session .add_all ([signal1 , signal2 ])
175
+ session .flush ()
176
+
177
+ # Associate entity with entity type
178
+ entity .entity_type = entity_type
179
+
180
+ # Create a signal instance for signal1
181
+ signal_instance1 = SignalInstance (signal = signal1 , project_id = 1 )
182
+ signal_instance1 .entities .append (entity )
183
+
184
+ # Create two signal instances for signal2
185
+ signal_instance2 = SignalInstance (signal = signal2 , project_id = 1 )
186
+ signal_instance2 .entities .append (entity )
187
+ signal_instance3 = SignalInstance (signal = signal2 , project_id = 1 )
188
+ signal_instance3 .entities .append (entity )
189
+
190
+ session .add_all ([signal_instance1 , signal_instance2 , signal_instance3 ])
191
+ session .commit ()
192
+
193
+ # Execute: Call the service function without signal_id (should count both signals)
194
+ signal_data_all = get_signal_stats (
195
+ db_session = session ,
196
+ entity_value = entity .value ,
197
+ entity_type_id = entity_type .id ,
198
+ num_days = None ,
199
+ )
200
+
201
+ # Execute: Call the service function with signal_id for signal1
202
+ signal_data_signal1 = get_signal_stats (
203
+ db_session = session ,
204
+ entity_value = entity .value ,
205
+ entity_type_id = entity_type .id ,
206
+ signal_id = signal1 .id ,
207
+ num_days = None ,
208
+ )
209
+
210
+ # Execute: Call the service function with signal_id for signal2
211
+ signal_data_signal2 = get_signal_stats (
212
+ db_session = session ,
213
+ entity_value = entity .value ,
214
+ entity_type_id = entity_type .id ,
215
+ signal_id = signal2 .id ,
216
+ num_days = None ,
217
+ )
218
+
219
+ # Assert: Without signal_id filter, we should count both instances
220
+ assert (
221
+ signal_data_all .num_signal_instances_alerted
222
+ + signal_data_all .num_signal_instances_snoozed
223
+ == 3
224
+ )
225
+
226
+ # Assert: With signal1 filter, we should count only signal_instance1
227
+ assert (
228
+ signal_data_signal1 .num_signal_instances_alerted
229
+ + signal_data_signal1 .num_signal_instances_snoozed
230
+ == 1
231
+ )
232
+
233
+ # Assert: With signal2 filter, we should count only signal_instance2
234
+ assert (
235
+ signal_data_signal2 .num_signal_instances_alerted
236
+ + signal_data_signal2 .num_signal_instances_snoozed
237
+ == 2
238
+ )
0 commit comments