1
1
# tests/test_sql_logic.py
2
2
import sys
3
3
import os
4
- # Add the parent directory to sys.path to locate validation_rules.py
5
- sys .path .insert (0 , os .path .abspath (os .path .join (os .path .dirname (__file__ ), '..' )))
6
-
7
4
import pytest
8
5
import json
9
- from validation_rules import validate_entry , common_rules
10
6
11
7
@pytest .fixture (scope = 'module' )
12
8
def expected_results ():
@@ -16,7 +12,7 @@ def fetch_results_as_dict(results):
16
12
return [dict (row ) for row in results ]
17
13
18
14
def load_expected_results ():
19
- json_path = os .path .join (os .path .dirname (__file__ ), '..' , 'expected_results.json' )
15
+ json_path = os .path .join (os .path .dirname (__file__ ), '..' , 'expected_results/expected_results .json' )
20
16
with open (json_path ) as f :
21
17
return json .load (f )
22
18
@@ -36,20 +32,23 @@ def run_query_test(db_connection, expected_results, query_name, sql_file):
36
32
results = db_connection .execute (query_sql )
37
33
results_dict = fetch_results_as_dict (results )
38
34
39
- # Filter valid results
40
- filtered_results = [result for result in results_dict if validate_entry (result , common_rules )]
41
-
42
35
# Compare with expected results
43
36
expected = expected_results [query_name ]["expected" ]
44
- assert filtered_results == expected , f"Error in { query_name } : { filtered_results } != { expected } "
37
+ assert results_dict == expected , f"Error in { query_name } : { results_dict } != { expected } "
45
38
39
+ # Tests
46
40
def test_active_sites_positive (db_connection , expected_results ):
47
41
run_query_test (db_connection , expected_results , "active_sites_positive" , "active_sites_positive.sql" )
48
42
49
43
def test_randomized_patients_positive (db_connection , expected_results ):
50
44
run_query_test (db_connection , expected_results , "randomized_patients_positive" , "randomized_patients_positive.sql" )
51
45
46
+ def test_active_patients_date (db_connection , expected_results ):
47
+ run_query_test (db_connection , expected_results , "active_patients_date" , "active_patients_date.sql" )
52
48
49
+ # Test that will fail
50
+ def test_failing_active_patients_date (db_connection , expected_results ):
51
+ run_query_test (db_connection , expected_results , "active_patients_study_1368_0004" , "failing_query_active_patients_date.sql" )
53
52
54
53
# @pytest.mark.parametrize("query_name, sql_file", [
55
54
# ("active_sites_positive", "active_sites_positive.sql"),
@@ -70,52 +69,4 @@ def test_randomized_patients_positive(db_connection, expected_results):
70
69
71
70
72
71
73
- # import sys
74
- # import os
75
- # sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
76
- # import pytest
77
- # import json
78
- # from validation_rules import validate_entry, common_rules
79
-
80
- # def fetch_results_as_dict(results):
81
- # return [dict(row) for row in results]
82
-
83
- # def load_expected_results():
84
- # json_path = os.path.join(os.path.dirname(__file__), '..', 'expected_results.json')
85
- # with open(json_path) as f:
86
- # return json.load(f)
87
-
88
- # expected_results = load_expected_results()
89
-
90
- # def load_sql_query(file_name):
91
- # sql_path = os.path.join(os.path.dirname(__file__), '..', 'sql_queries', file_name)
92
- # with open(sql_path, 'r') as file:
93
- # return file.read()
94
-
95
- # def test_active_sites_positive(db_connection):
96
- # query_name = "active_sites_positive"
97
- # query_sql = load_sql_query("active_sites_positive.sql")
98
- # results = db_connection.execute(query_sql)
99
- # results_dict = fetch_results_as_dict(results)
100
-
101
- # # Filtrar resultados válidos
102
- # filtered_results = [result for result in results_dict if validate_entry(result, common_rules)]
103
-
104
- # # Comparar con resultados esperados
105
- # expected = expected_results[query_name]["expected"]
106
- # assert filtered_results == expected, f"Error in {query_name}: {filtered_results} != {expected}"
107
-
108
- # def test_randomized_patients_positive(db_connection):
109
- # query_name = "randomized_patients_positive"
110
- # query_sql = load_sql_query("randomized_patients_positive.sql")
111
- # results = db_connection.execute(query_sql)
112
- # results_dict = fetch_results_as_dict(results)
113
-
114
- # # Filtrar resultados válidos
115
- # filtered_results = [result for result in results_dict if validate_entry(result, common_rules)]
116
-
117
- # # Comparar con resultados esperados
118
- # expected = expected_results[query_name]["expected"]
119
- # assert filtered_results == expected, f"Error in {query_name}: {filtered_results} != {expected}"
120
-
121
72
0 commit comments