phase 2
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user