"""Unit tests for State Published Prices & Bidding Market Price Comparison."""

from app.modules.inventory.application.state_price_sync_service import StatePriceSyncService


class TestMaterialPriceBenchmark:
    """Test suite for StatePriceSyncService & price comparison engine."""

    def test_seed_and_get_available_periods(self):
        svc = StatePriceSyncService()
        count = svc.seed_official_state_prices()
        assert count > 0

        periods = svc.get_available_periods()
        assert len(periods) >= 5
        period_codes = [p["publish_period"] for p in periods]
        assert "2026-08" in period_codes
        assert "2026-07" in period_codes
        assert "2026-06" in period_codes

    def test_get_price_comparison_metrics(self):
        svc = StatePriceSyncService()
        data = svc.get_price_comparison(
            publish_period="2026-08", region_code="HAI_PHONG_KHU_VUC_2"
        )

        assert data["period"] == "2026-08"
        assert "Khu vực II" in data["region_name"]

        kpis = data["kpis"]
        assert kpis["total_items"] >= 15
        assert kpis["profitable_count"] > 0
        assert kpis["total_state_value_vnd"] > 0
        assert kpis["total_market_value_vnd"] > 0
        assert kpis["total_variance_vnd"] > 0

        # Check sample item properties
        items = data["items"]
        assert len(items) >= 15
        for item in items:
            assert "material_code" in item
            assert "material_name" in item
            assert "state_unit_price_vnd" in item
            assert "market_unit_price_vnd" in item
            assert "variance_vnd" in item
            assert "profit_margin_percent" in item
            assert "risk_level" in item
            assert item["risk_level"] in [
                "HIGH_PROFIT",
                "NORMAL_PROFIT",
                "LOSS_RISK",
                "PENDING_DATA",
            ]
