66from app .api .mines .reports .models .mine_report_definition import MineReportDefinition
77from app .api .mines .reports .models .mine_report_definition_compliance_article_xref import \
88 MineReportDefinitionComplianceArticleXref
9+ from app .api .mines .reports .models .mine_report import MineReport
910
1011
1112# test non-paginated results
@@ -97,7 +98,20 @@ def test_post_mine_report_definition_pagination(test_client, db_session, auth_he
9798# test filters
9899def test_mine_report_definition_active_filter (test_client , db_session , auth_headers ):
99100 all_records = db_session .query (MineReportDefinition ).all ()
100- all_record_count = len (all_records )
101+
102+ expected_records = []
103+ for record in all_records :
104+ if record .active_ind :
105+ expected_records .append (record )
106+ else :
107+ has_active_report = db_session .query (MineReport ).filter (
108+ MineReport .mine_report_definition_id == record .mine_report_definition_id ,
109+ MineReport .deleted_ind == False
110+ ).first ()
111+
112+ if has_active_report :
113+ expected_records .append (record )
114+
101115 request_all_data = "active_ind=true&active_ind=false&show_expired=true"
102116 request_inactive_data = "active_ind=false&show_expired=true"
103117 print (request_all_data )
@@ -109,10 +123,9 @@ def test_mine_report_definition_active_filter(test_client, db_session, auth_head
109123 get_all_data = json .loads (get_all_resp .data .decode ())
110124
111125 assert get_all_resp .status_code == 200
112- assert len (get_all_data ['records' ]) == all_record_count
126+ assert len (get_all_data ['records' ]) == len ( expected_records )
113127
114- inactive_records = list (x for x in all_records if x .active_ind == False )
115- inactive_record_count = len (inactive_records )
128+ inactive_records = list (x for x in expected_records if x .active_ind == False )
116129
117130 get_inactive_resp = test_client .get (
118131 f'/mines/reports/definitions?{ request_inactive_data } ' ,
@@ -121,7 +134,7 @@ def test_mine_report_definition_active_filter(test_client, db_session, auth_head
121134 get_inactive_data = json .loads (get_inactive_resp .data .decode ())
122135
123136 assert get_inactive_resp .status_code == 200
124- assert len (get_inactive_data ['records' ]) == inactive_record_count
137+ assert len (get_inactive_data ['records' ]) == len ( inactive_records )
125138
126139def test_mine_report_definition_section_filter (test_client , db_session , auth_headers ):
127140 section_search = "2.3.1"
@@ -343,3 +356,31 @@ def test_post_mine_report_definition_missing_required_fields(test_client, auth_h
343356 # Assertions
344357 assert post_resp .status_code == 400
345358 assert "Input payload validation failed" in post_data ['message' ]
359+
360+ # Test inactive MineReportDefinitions should only appear if they have at least one active MineReport associated to it
361+ def test_mine_report_definition_inactive_without_reports_filtered (test_client , db_session , auth_headers ):
362+ all_definitions = db_session .query (MineReportDefinition ).all ()
363+
364+ expected_definitions = []
365+ for definition in all_definitions :
366+ if definition .active_ind :
367+ expected_definitions .append (definition )
368+ else :
369+ has_active_report = db_session .query (MineReport ).filter (
370+ MineReport .mine_report_definition_id == definition .mine_report_definition_id ,
371+ MineReport .deleted_ind == False
372+ ).first ()
373+
374+ if has_active_report :
375+ expected_definitions .append (definition )
376+
377+ request_data = "active_ind=true&active_ind=false&show_expired=true"
378+
379+ get_resp = test_client .get (
380+ f'/mines/reports/definitions?{ request_data } ' ,
381+ headers = auth_headers ['full_auth_header' ],
382+ )
383+ get_data = json .loads (get_resp .data .decode ())
384+
385+ assert get_resp .status_code == 200
386+ assert len (get_data ['records' ]) == len (expected_definitions )
0 commit comments