"""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