Files
finn-mcp/tests/test_formatting.py
2026-05-16 16:14:01 +00:00

173 lines
4.3 KiB
Python

"""Tests for formatting module."""
import pytest
from finn_eiendom import formatting
def test_render_ad_json():
"""Test rendering ad as JSON."""
ad = {
"finnkode": "123456",
"title": "Nice apartment",
"address": "Hovedstreet 1",
"asking_price": 5000000,
"area_m2": 80,
}
result = formatting.render_ad(ad, "json")
assert "123456" in result
assert "Nice apartment" in result
assert isinstance(result, str)
def test_render_ad_markdown():
"""Test rendering ad as Markdown."""
ad = {
"finnkode": "123456",
"title": "Nice apartment",
"address": "Hovedstreet 1",
"asking_price": 5000000,
"area_m2": 80,
}
result = formatting.render_ad(ad, "markdown")
assert "Nice apartment" in result
assert "Hovedstreet 1" in result
assert "#" in result # Markdown headers
def test_render_shortlist_json():
"""Test rendering shortlist as JSON."""
data = {
"shortlist": [
{
"finnkode": "1",
"title": "Ad 1",
"address": "Street 1",
"asking_price": 5000000,
"area_m2": 80,
},
{
"finnkode": "2",
"title": "Ad 2",
"address": "Street 2",
"asking_price": 4500000,
"area_m2": 75,
},
]
}
result = formatting.render_shortlist(data, "json")
assert "Ad 1" in result
assert "Ad 2" in result
def test_render_shortlist_markdown():
"""Test rendering shortlist as Markdown."""
data = {
"shortlist": [
{
"finnkode": "1",
"title": "Ad 1",
"address": "Street 1",
"asking_price": 5000000,
"area_m2": 80,
},
]
}
result = formatting.render_shortlist(data, "markdown")
assert "Ad 1" in result
assert "Street 1" in result
def test_render_shortlist_table():
"""Test rendering shortlist as table."""
data = {
"shortlist": [
{
"finnkode": "1",
"title": "Ad 1",
"address": "Street 1",
"asking_price": 5000000,
"area_m2": 80,
},
]
}
result = formatting.render_shortlist(data, "table")
assert "|" in result # Table format
def test_render_comparison():
"""Test rendering comparison."""
data = {
"listings": [
{
"finnkode": "1",
"title": "Ad 1",
"address": "Street 1",
"asking_price": 5000000,
"area_m2": 80,
},
{
"finnkode": "2",
"title": "Ad 2",
"address": "Street 2",
"asking_price": 4500000,
"area_m2": 75,
},
]
}
result = formatting.render_comparison(data, "markdown")
assert "Comparison" in result
assert "Ad 1" in result
assert "Ad 2" in result
def test_render_diff():
"""Test rendering diff."""
data = {
"new_ads": [
{
"title": "New Ad",
"address": "New Street",
"asking_price": 5000000,
},
],
"removed_ads": [],
"changed_ads": [],
}
result = formatting.render_diff(data, "markdown")
assert "New" in result
assert "New Ad" in result
def test_render_cache_stats():
"""Test rendering cache stats."""
data = {
"total_finn_ads": 100,
"total_eiendom_units": 50,
"total_search_runs": 10,
"cache_size_mb": 25.5,
"last_updated": "2024-01-01",
}
result = formatting.render_cache_stats(data, "json")
assert "100" in result
assert "50" in result
def test_format_validation():
"""Test that invalid formats raise ValueError."""
with pytest.raises(ValueError):
formatting.render_ad({}, "invalid")
def test_render_unit():
"""Test rendering Eiendom unit."""
unit = {
"unit_code": "code123",
"address": "Hovedstreet 1",
"rooms": 3,
"estimated_selling_price": 5000000,
}
result = formatting.render_unit(unit, "markdown")
assert "Hovedstreet 1" in result
assert "3" in result