diff --git a/pipeline.Makefile b/pipeline.Makefile index 8e33e4d..0f1b861 100644 --- a/pipeline.Makefile +++ b/pipeline.Makefile @@ -362,8 +362,8 @@ $(MAPPING_SUCCESS_SENTINEL): $(SCHEMA_FILE) $(VALIDATION_SUCCESS_SENTINEL) --data_dir $(DM_INPUT_DIR) \ --var_dir $(DM_TRANS_SPEC_DIR) \ --output_dir $(MAPPING_OUTPUT_DIR) \ - --output_prefix $(DM_MAPPING_PREFIX) \ - --output_postfix "$(DM_MAPPING_POSTFIX)" \ + $(if $(DM_MAPPING_PREFIX),--output_prefix $(DM_MAPPING_PREFIX)) \ + $(if $(DM_MAPPING_POSTFIX),--output_postfix "$(DM_MAPPING_POSTFIX)") \ --output_type $(DM_MAP_OUTPUT_TYPE) \ --chunk_size $(DM_MAP_CHUNK_SIZE) @echo "✓ Data mapping complete. Output written to $(MAPPING_OUTPUT_DIR)" diff --git a/src/dm_bip/map_data/map_data.py b/src/dm_bip/map_data/map_data.py index eb6aba3..f354029 100644 --- a/src/dm_bip/map_data/map_data.py +++ b/src/dm_bip/map_data/map_data.py @@ -207,11 +207,11 @@ def main( output_prefix: Annotated[ str, typer.Option(), - ], + ] = "", output_postfix: Annotated[ str, typer.Option(), - ], + ] = "", output_type: Annotated[ StreamFormat, typer.Option(), diff --git a/tests/unit/test_map_data.py b/tests/unit/test_map_data.py index 5798b1b..2598b0b 100644 --- a/tests/unit/test_map_data.py +++ b/tests/unit/test_map_data.py @@ -486,6 +486,63 @@ def test_process_entities_creates_output_files(linkml_test_setup, temp_dir): assert first_record["id"] == "SUBJ001" +def test_process_entities_no_prefix_no_postfix(linkml_test_setup, temp_dir): + """Test that process_entities works with empty prefix and postfix.""" + entities = ["Person"] + process_entities( + entities=entities, + data_loader=linkml_test_setup["data_loader"], + var_dir=linkml_test_setup["spec_dir"], + source_schemaview=linkml_test_setup["source_sv"], + target_schemaview=linkml_test_setup["target_sv"], + output_dir=temp_dir, + output_prefix="", + output_postfix="", + output_type="jsonl", + chunk_size=10, + ) + output_file = Path(temp_dir) / "Person.jsonl" + assert output_file.exists() + + +def test_process_entities_prefix_only(linkml_test_setup, temp_dir): + """Test that process_entities works with only prefix set.""" + entities = ["Person"] + process_entities( + entities=entities, + data_loader=linkml_test_setup["data_loader"], + var_dir=linkml_test_setup["spec_dir"], + source_schemaview=linkml_test_setup["source_sv"], + target_schemaview=linkml_test_setup["target_sv"], + output_dir=temp_dir, + output_prefix="test", + output_postfix="", + output_type="jsonl", + chunk_size=10, + ) + output_file = Path(temp_dir) / "test-Person.jsonl" + assert output_file.exists() + + +def test_process_entities_postfix_only(linkml_test_setup, temp_dir): + """Test that process_entities works with only postfix set.""" + entities = ["Person"] + process_entities( + entities=entities, + data_loader=linkml_test_setup["data_loader"], + var_dir=linkml_test_setup["spec_dir"], + source_schemaview=linkml_test_setup["source_sv"], + target_schemaview=linkml_test_setup["target_sv"], + output_dir=temp_dir, + output_prefix="", + output_postfix="v1", + output_type="jsonl", + chunk_size=10, + ) + output_file = Path(temp_dir) / "Person-v1.jsonl" + assert output_file.exists() + + def test_process_entities_skips_missing_specs(linkml_test_setup, temp_dir): """Test that process_entities skips entities without spec files.""" # NonexistentEntity has no specs