@@ -36,12 +36,16 @@ def mock_dependencies(self):
3636 patch ("mavedb.lib.validation.dataframe.calibration.validate_no_null_rows" ) as mock_validate_no_null ,
3737 patch ("mavedb.lib.validation.dataframe.calibration.validate_variant_column" ) as mock_validate_variant ,
3838 patch ("mavedb.lib.validation.dataframe.calibration.validate_data_column" ) as mock_validate_data ,
39+ patch (
40+ "mavedb.lib.validation.dataframe.calibration.validate_index_existence_in_score_set"
41+ ) as mock_validate_index_existence ,
3942 ):
4043 yield {
4144 "standardize_dataframe" : mock_standardize ,
4245 "validate_no_null_rows" : mock_validate_no_null ,
4346 "validate_variant_column" : mock_validate_variant ,
4447 "validate_data_column" : mock_validate_data ,
48+ "validate_index_existence_in_score_set" : mock_validate_index_existence ,
4549 }
4650
4751 def test_validate_and_standardize_calibration_classes_dataframe_success (self , mock_dependencies ):
@@ -351,6 +355,52 @@ def test_validate_and_standardize_calibration_classes_dataframe_empty_dataframe(
351355 with pytest .raises (ValidationError , match = f"missing required column: '{ calibration_class_column_name } '" ):
352356 validate_and_standardize_calibration_classes_dataframe (mock_db , mock_score_set , mock_calibration , input_df )
353357
358+ def test_validate_and_standardize_calibration_classes_dataframe_multiple_candidate_index_columns (
359+ self , mock_dependencies
360+ ):
361+ """Test successful validation when multiple candidate index columns are present."""
362+ mock_db = Mock ()
363+ mock_score_set = Mock ()
364+ mock_score_set .id = 123
365+ mock_calibration = Mock ()
366+ mock_calibration .class_based = True
367+
368+ input_df = pd .DataFrame (
369+ {
370+ calibration_variant_column_name : ["var1" , "var2" ],
371+ hgvs_nt_column : ["NM_000546.5:c.215C>G" , "NM_000546.5:c.743G>A" ],
372+ calibration_class_column_name : ["A" , "B" ],
373+ }
374+ )
375+ standardized_df = pd .DataFrame (
376+ {
377+ calibration_variant_column_name : ["var1" , "var2" ],
378+ hgvs_nt_column : ["NM_000546.5:c.215C>G" , "NM_000546.5:c.743G>A" ],
379+ calibration_class_column_name : ["A" , "B" ],
380+ }
381+ )
382+
383+ mock_dependencies ["standardize_dataframe" ].return_value = standardized_df
384+ mock_dependencies ["validate_index_existence_in_score_set" ].return_value = None
385+
386+ mock_scalars = Mock ()
387+ mock_scalars .all .return_value = ["var1" , "var2" ]
388+ mock_db .scalars .return_value = mock_scalars
389+
390+ mock_classification1 = Mock ()
391+ mock_classification1 .class_ = "A"
392+ mock_classification2 = Mock ()
393+ mock_classification2 .class_ = "B"
394+ mock_calibration .functional_classifications = [mock_classification1 , mock_classification2 ]
395+
396+ result , index_column = validate_and_standardize_calibration_classes_dataframe (
397+ mock_db , mock_score_set , mock_calibration , input_df
398+ )
399+
400+ assert result .equals (standardized_df )
401+ assert index_column == calibration_variant_column_name
402+ mock_dependencies ["validate_index_existence_in_score_set" ].assert_called_once ()
403+
354404
355405class TestValidateCalibrationDfColumnNames :
356406 """Test suite for validate_calibration_df_column_names function."""
0 commit comments