1+ import pytest
2+ import pandas as pd
3+ import tempfile
4+ from pathlib import Path
5+ from ..redcap2reproschema import process_csv
6+
7+ def test_process_csv ():
8+ csv_data = '''Form Name,Variable / Field Name,Field Type,Field Annotation,Choices Calculations OR Slider Labels
9+ form1,field1,text,,
10+ form1,field2,calc,,2+2
11+ form1,field3,text,@CALCTEXT(3*3),
12+ form2,field4,text,,
13+ ,field5,text,,'''
14+
15+ with tempfile .TemporaryDirectory () as tmpdir :
16+ csv_path = Path (tmpdir ) / "test.csv"
17+ csv_path .write_text (csv_data )
18+
19+ datas , order , compute = process_csv (csv_path , tmpdir , "test_protocol" )
20+
21+ assert set (datas .keys ()) == {"form1" , "form2" }
22+ assert len (datas ["form1" ]) == 3
23+ assert len (datas ["form2" ]) == 1
24+
25+ assert order ["form1" ] == ["items/field1" ] # field3 goes to compute
26+ assert order ["form2" ] == ["items/field4" ]
27+
28+ assert len (compute ["form1" ]) == 2
29+ assert compute ["form1" ][0 ]["variableName" ] == "field2"
30+ assert compute ["form1" ][1 ]["variableName" ] == "field3"
31+
32+ def test_process_csv_missing_columns ():
33+ csv_data = "Column1,Column2\n a,b"
34+ with tempfile .TemporaryDirectory () as tmpdir :
35+ csv_path = Path (tmpdir ) / "test.csv"
36+ csv_path .write_text (csv_data )
37+
38+ with pytest .raises (ValueError ):
39+ process_csv (csv_path , tmpdir , "test_protocol" )
0 commit comments