@@ -346,6 +346,53 @@ def test_query_filter_by_action(self) -> None:
346346 assert len (response3 .data ) == 2
347347 assert {self .workflow .name , self .workflow_two .name } == {w ["name" ] for w in response3 .data }
348348
349+ def test_filter_by_detector (self ) -> None :
350+ project_1 = self .create_project (organization = self .organization )
351+ project_2 = self .create_project (organization = self .organization )
352+ project_3 = self .create_project (organization = self .organization )
353+
354+ detector_1 = self .create_detector (project = project_1 , name = "Detector 1" )
355+ detector_2 = self .create_detector (project = project_2 , name = "Detector 2" )
356+ detector_3 = self .create_detector (project = project_3 , name = "Detector 3" )
357+
358+ self .create_detector_workflow (workflow = self .workflow , detector = detector_1 )
359+ self .create_detector_workflow (workflow = self .workflow_two , detector = detector_2 )
360+ self .create_detector_workflow (workflow = self .workflow_three , detector = detector_3 )
361+
362+ # Filter by single detector
363+ response = self .get_success_response (
364+ self .organization .slug ,
365+ qs_params = {"detector" : str (detector_1 .id )},
366+ )
367+ assert len (response .data ) == 1
368+ assert response .data [0 ]["name" ] == self .workflow .name
369+
370+ # Filter by multiple detectors
371+ response2 = self .get_success_response (
372+ self .organization .slug ,
373+ qs_params = [
374+ ("detector" , str (detector_1 .id )),
375+ ("detector" , str (detector_2 .id )),
376+ ],
377+ )
378+ assert len (response2 .data ) == 2
379+ assert {w ["name" ] for w in response2 .data } == {self .workflow .name , self .workflow_two .name }
380+
381+ # Filter by non-existent detector ID returns no results
382+ response3 = self .get_success_response (
383+ self .organization .slug ,
384+ qs_params = {"detector" : "999999" },
385+ )
386+ assert len (response3 .data ) == 0
387+
388+ # Invalid detector ID format returns error
389+ response4 = self .get_error_response (
390+ self .organization .slug ,
391+ qs_params = {"detector" : "not-an-id" },
392+ status_code = 400 ,
393+ )
394+ assert response4 .data == {"detector" : ["Invalid detector ID format" ]}
395+
349396 def test_compound_query (self ) -> None :
350397 self .create_detector_workflow (
351398 workflow = self .workflow , detector = self .create_detector (project = self .project )
0 commit comments