fs-lawrisk/tests/test_import_flow.py

107 lines
4.2 KiB
Python
Raw Normal View History

import os
import io
import time
import pandas as pd
from lawrisk.services.licensing_repo import start_permit_import_session, commit_permit_import_session, _lic_pg_conn
from lawrisk.utils.env_loader import load_env
def test_import_searchability():
load_env()
print("Starting test import...")
# Create simple Excel in memory
# Using columns that are known to work
data = [
["事项名称", "风险提示内容", "法律依据", "主题"],
["测试许可_SearchTest", "测试风险内容", "测试依据", "测试主题_SearchTest"]
]
df = pd.DataFrame(data[1:], columns=data[0])
output = io.BytesIO()
with pd.ExcelWriter(output, engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name="测试地区_SearchTest")
excel_data = output.getvalue()
try:
# 1. Start session
session = start_permit_import_session(
file_bytes=excel_data,
filename="test_search.xlsx",
binding_mode="auto"
)
session_id = session['session_id']
sheet_summaries = session['sheet_summaries']
print(f"Session started: {session_id}")
for s in sheet_summaries:
print(f" - Sheet: {s['sheet_name']}, row_count: {s['row_count']}, permit_count: {s['permit_count']}")
if s['missing_region']:
print(f" WARNING: missing_region for {s['sheet_name']}")
sheet_names = [s['sheet_name'] for s in sheet_summaries]
# 2. Commit session
result = commit_permit_import_session(
session_id=session_id,
sheet_names=sheet_names,
theme_bindings={
"测试地区_SearchTest": {
"测试许可_SearchTest": ["测试主题_SearchTest"]
}
},
edited_by="test_bot"
)
print("Import committed successfully.")
# 3. Check database for region_themes
with _lic_pg_conn() as conn:
cur = conn.cursor()
# Wait a tiny bit just in case of async issues which shouldn't happen here
cur.execute("""
SELECT r.name, t.name
FROM region_themes rt
JOIN regions r ON r.id = rt.region_id
JOIN themes t ON t.id = rt.theme_id
WHERE r.name = '测试地区_SearchTest'
""")
rows = cur.fetchall()
print(f"Entries in region_themes for test region: {rows}")
if rows:
print("SUCCESS: region_themes entry was created during import.")
else:
# Let's check region_theme_permits to see if anything was imported at all
cur.execute("""
SELECT r.name, p.name, t.name
FROM region_theme_permits rtp
JOIN regions r ON r.id = rtp.region_id
JOIN permits p ON p.id = rtp.permit_id
LEFT JOIN themes t ON t.id = rtp.theme_id
WHERE r.name = '测试地区_SearchTest'
""")
rtp_rows = cur.fetchall()
print(f"Entries in region_theme_permits: {rtp_rows}")
print("FAILURE: region_themes entry was NOT created during import.")
# Clean up test data
print("Cleaning up test data...")
cur.execute("SELECT id FROM regions WHERE name = '测试地区_SearchTest'")
res = cur.fetchone()
if res:
rid = res[0]
cur.execute("DELETE FROM region_theme_permits WHERE region_id = %s", (rid,))
cur.execute("DELETE FROM region_permit_details WHERE region_id = %s", (rid,))
cur.execute("DELETE FROM region_permit_risks WHERE region_id = %s", (rid,))
cur.execute("DELETE FROM regions WHERE id = %s", (rid,))
conn.commit()
print("Cleanup done.")
except Exception as e:
print(f"Test failed with error: {e}")
# import traceback
# traceback.print_exc()
if __name__ == "__main__":
test_import_searchability()