diff --git a/reproschema/cli.py b/reproschema/cli.py index b7fcfe5..1827875 100644 --- a/reproschema/cli.py +++ b/reproschema/cli.py @@ -1,5 +1,6 @@ import os import click +from pathlib import Path from . import get_logger, set_logger_level from . import __version__ @@ -104,11 +105,8 @@ def serve(port): def reproschema2redcap(input_path, output_csv_path): """ Convert reproschema JSON to Redcap CSV format. - - INPUT_PATH: Directory containing reproschema JSON files. - OUTPUT_CSV_PATH: Path to the output CSV file. """ - rs2redcap(input_path, output_csv_path) - click.echo( - f"Converted reproschema JSON from {input_path} to Redcap CSV at {output_csv_path}" - ) + # Convert input_path to a Path object + input_path_obj = Path(input_path) + rs2redcap(input_path_obj, output_csv_path) + click.echo(f"Converted reproschema JSON from {input_path} to Redcap CSV at {output_csv_path}") \ No newline at end of file diff --git a/reproschema/reproschema2redcap.py b/reproschema/reproschema2redcap.py index 3400d51..05350fc 100644 --- a/reproschema/reproschema2redcap.py +++ b/reproschema/reproschema2redcap.py @@ -121,6 +121,7 @@ def get_csv_data(dir_path): relative_activity_path.lstrip("../") ) activity_path = dir_path / normalized_relative_path + print(f"Processing activity {activity_path}") parsed_activity_json = read_json_file(activity_path) if parsed_activity_json: diff --git a/reproschema/tests/test_reproschema2redcap.py b/reproschema/tests/test_reproschema2redcap.py new file mode 100644 index 0000000..374d8b7 --- /dev/null +++ b/reproschema/tests/test_reproschema2redcap.py @@ -0,0 +1,43 @@ +import os +import pytest +from click.testing import CliRunner +from ..cli import main +from shutil import copytree +from pathlib import Path +import csv + +def test_reproschema2redcap_success(): + runner = CliRunner() + + with runner.isolated_filesystem(): + # Copy necessary test data into the isolated filesystem + original_data_dir = os.path.join(os.path.dirname(__file__), "test_rs2redcap_data") + copytree(original_data_dir, "input_data") + + input_path = Path("input_data") # Using Path object + output_csv_path = "output.csv" + + # Invoke the reproschema2redcap command + result = runner.invoke(main, ['reproschema2redcap', str(input_path), output_csv_path]) + + # Print the output for debugging + print(result.output) + + # Assert the expected outcomes + assert result.exit_code == 0 + assert f"Converted reproschema JSON from {input_path} to Redcap CSV at {output_csv_path}" in result.output + + # Check if the output CSV file has been created + assert os.path.exists(output_csv_path) + + # Read and print the contents of the CSV file + with open(output_csv_path, 'r', encoding='utf-8') as csv_file: + reader = csv.reader(csv_file) + csv_contents = list(reader) + print("CSV File Contents:") + for row in csv_contents: + print(row) + + # Optionally, assert conditions about the CSV contents + # For example, assert that the file is not empty + assert len(csv_contents) > 0 \ No newline at end of file