AdminAnalytics/tests/test_irs990_loader.py
2026-03-30 07:15:14 -04:00

46 lines
1.7 KiB
Python

from admin_analytics.irs990.loader import load_filing, load_part_vii, load_schedule_j
def test_load_filing(db_conn, fixtures_dir):
xml_path = fixtures_dir / "990_sample.xml"
assert load_filing(db_conn, xml_path, "TEST001")
row = db_conn.execute(
"SELECT ein, tax_year, organization_name, total_expenses FROM raw_990_filing WHERE object_id = 'TEST001'"
).fetchone()
assert row[0] == "516000297"
assert row[1] == 2022
assert row[2] == "UNIVERSITY OF DELAWARE"
assert row[3] == 1700000000
def test_load_filing_idempotent(db_conn, fixtures_dir):
xml_path = fixtures_dir / "990_sample.xml"
load_filing(db_conn, xml_path, "TEST001")
load_filing(db_conn, xml_path, "TEST001") # second load should overwrite
count = db_conn.execute(
"SELECT COUNT(*) FROM raw_990_filing WHERE object_id = 'TEST001'"
).fetchone()[0]
assert count == 1
def test_load_part_vii(db_conn, fixtures_dir):
xml_path = fixtures_dir / "990_sample.xml"
count = load_part_vii(db_conn, xml_path, "TEST001")
assert count == 3
rows = db_conn.execute(
"SELECT person_name, reportable_comp_from_org FROM raw_990_part_vii WHERE object_id = 'TEST001' ORDER BY reportable_comp_from_org DESC"
).fetchall()
assert rows[0] == ("JOHN DOE", 850000)
def test_load_schedule_j(db_conn, fixtures_dir):
xml_path = fixtures_dir / "990_sample.xml"
count = load_schedule_j(db_conn, xml_path, "TEST001")
assert count == 2
row = db_conn.execute(
"SELECT person_name, base_compensation, total_compensation FROM raw_990_schedule_j WHERE object_id = 'TEST001' AND person_name = 'JOHN DOE'"
).fetchone()
assert row == ("JOHN DOE", 700000, 950000)