2020 ScanReportTable ,
2121 ScanReportValue ,
2222 VisibilityChoices ,
23+ MappingRecommendation ,
2324)
2425
2526
@@ -673,13 +674,11 @@ def setUp(self):
673674 dataset = "The Heights of Hobbits" ,
674675 visibility = VisibilityChoices .PUBLIC ,
675676 parent_dataset = self .public_dataset ,
676- status = "COMPLET" ,
677677 )
678678 self .scanreport2 = ScanReport .objects .create (
679679 dataset = "The Kinds of Orcs" ,
680680 visibility = VisibilityChoices .RESTRICTED ,
681681 parent_dataset = self .restricted_dataset ,
682- status = "COMPLET" ,
683682 )
684683
685684 # Set up projects
@@ -701,12 +700,6 @@ def setUp(self):
701700 name = "Field1" ,
702701 description_column = "" ,
703702 type_column = "" ,
704- max_length = 32 ,
705- nrows = 0 ,
706- nrows_checked = 0 ,
707- fraction_empty = 0.0 ,
708- nunique_values = 0 ,
709- fraction_unique = 0.0 ,
710703 )
711704 self .scanreportvalue1 = ScanReportValue .objects .create (
712705 scan_report_field = self .scanreportfield1 ,
@@ -745,12 +738,6 @@ def setUp(self):
745738 name = "Field2" ,
746739 description_column = "" ,
747740 type_column = "" ,
748- max_length = 32 ,
749- nrows = 0 ,
750- nrows_checked = 0 ,
751- fraction_empty = 0.0 ,
752- nunique_values = 0 ,
753- fraction_unique = 0.0 ,
754741 )
755742 self .scanreportvalue2 = ScanReportValue .objects .create (
756743 scan_report_field = self .scanreportfield2 ,
@@ -805,3 +792,82 @@ def test_az_function_user_get(self):
805792 az_response_ids = [item ["id" ] for item in az_response .data ]
806793 self .assertTrue (self .scanreportconcept2 .id in az_response_ids )
807794 self .assertTrue (self .scanreportconcept4 .id in az_response_ids )
795+
796+ def test_scan_report_value_list_v3_includes_recommendations (self ):
797+ """Test that ScanReportValueListV3 includes mapping recommendations."""
798+ # Create test data
799+ scan_report = ScanReport .objects .create (
800+ dataset = "Test Dataset" ,
801+ visibility = VisibilityChoices .PUBLIC ,
802+ parent_dataset = self .public_dataset ,
803+ )
804+
805+ table = ScanReportTable .objects .create (
806+ scan_report = scan_report ,
807+ name = "Test Table" ,
808+ )
809+
810+ field = ScanReportField .objects .create (
811+ scan_report_table = table ,
812+ name = "Test Field" ,
813+ description_column = "Test Description" ,
814+ type_column = "string" ,
815+ )
816+
817+ value = ScanReportValue .objects .create (
818+ scan_report_field = field ,
819+ value = "test_value" ,
820+ frequency = 5 ,
821+ )
822+
823+ # Create a concept for the recommendation
824+ concept = Concept .objects .create (
825+ concept_id = 12345 ,
826+ concept_name = "Test Concept" ,
827+ concept_code = "TEST123" ,
828+ domain_id = "Test" ,
829+ vocabulary_id = "Test" ,
830+ concept_class_id = "Test" ,
831+ standard_concept = "S" ,
832+ valid_start_date = "2020-01-01" ,
833+ valid_end_date = "2099-12-31" ,
834+ )
835+
836+ # Create a mapping recommendation
837+ content_type = ContentType .objects .get_for_model (ScanReportValue )
838+ recommendation = MappingRecommendation .objects .create (
839+ content_type = content_type ,
840+ object_id = value .id ,
841+ concept = concept ,
842+ score = 0.85 ,
843+ tool_name = "test-tool" ,
844+ tool_version = "1.0.0" ,
845+ )
846+
847+ # Make request
848+ url = f"/api/v3/scanreports/{ scan_report .id } /tables/{ table .id } /fields/{ field .id } /values/"
849+ response = self .client .get (url )
850+
851+ # Verify response
852+ self .assertEqual (response .status_code , 200 )
853+ data = response .json ()
854+
855+ # Check that the value is returned
856+ self .assertEqual (len (data ["results" ]), 1 )
857+ value_data = data ["results" ][0 ]
858+
859+ # Check that mapping recommendations are included
860+ self .assertIn ("mapping_recommendations" , value_data )
861+ self .assertEqual (len (value_data ["mapping_recommendations" ]), 1 )
862+
863+ recommendation_data = value_data ["mapping_recommendations" ][0 ]
864+ self .assertEqual (recommendation_data ["id" ], recommendation .id )
865+ self .assertEqual (recommendation_data ["score" ], 0.85 )
866+ self .assertEqual (recommendation_data ["tool_name" ], "test-tool" )
867+ self .assertEqual (recommendation_data ["tool_version" ], "1.0.0" )
868+ self .assertEqual (
869+ recommendation_data ["concept" ]["concept_id" ], concept .concept_id
870+ )
871+ self .assertEqual (
872+ recommendation_data ["concept" ]["concept_name" ], concept .concept_name
873+ )
0 commit comments