Skip to content

Commit

Permalink
add cli for rs2redcap (need test data)
Browse files Browse the repository at this point in the history
  • Loading branch information
yibeichan committed Dec 28, 2023
1 parent 91b7774 commit ad2bab4
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 7 deletions.
12 changes: 5 additions & 7 deletions reproschema/cli.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import os
import click
from pathlib import Path

from . import get_logger, set_logger_level
from . import __version__
Expand Down Expand Up @@ -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}")
1 change: 1 addition & 0 deletions reproschema/reproschema2redcap.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
43 changes: 43 additions & 0 deletions reproschema/tests/test_reproschema2redcap.py
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit ad2bab4

Please sign in to comment.