You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

56 lines
1.8 KiB

import sys
import os
import asyncio
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'tools'))
from property_tracker import add_property, get_properties, analyze_equity_options
os.environ["ENABLE_REAL_ESTATE"] = "true"
def _add(address, purchase_price, current_value, mortgage_balance):
"""Helper: run async add_property and return the property dict."""
result = asyncio.run(add_property(
address=address,
purchase_price=purchase_price,
current_value=current_value,
mortgage_balance=mortgage_balance,
))
return result["result"]["property"]
def test_equity_three_options_returned():
prop = _add(
address="123 Equity Test St Austin TX",
purchase_price=400000,
current_value=520000,
mortgage_balance=380000,
)
result = analyze_equity_options(prop["id"])
assert "options" in result
assert "leave_untouched" in result["options"]
assert "cash_out_invest" in result["options"]
assert "rental_property" in result["options"]
assert result["current_equity"] == 140000
assert result["accessible_equity"] == 112000
def test_equity_math_correct():
prop = _add("Math Test Property", 300000, 450000, 200000)
result = analyze_equity_options(prop["id"])
assert result["current_equity"] == 250000
assert result["accessible_equity"] == 200000
def test_equity_recommendation_exists():
prop = _add("Rec Test", 350000, 480000, 320000)
result = analyze_equity_options(prop["id"])
assert "recommendation" in result
assert len(result["recommendation"]) > 20
assert "disclaimer" in result
def test_equity_bad_property_id():
result = analyze_equity_options("nonexistent-id-99999")
assert result is not None
assert "error" in result