| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- from pathlib import Path
- import unittest
- from app.market import MarketService
- from app.market.models import InquiryRequest
- from app.mock_data import LocalMockDataService, MockBatchRequest
- from app.repository import RDFRepository
- ROOT = Path(__file__).resolve().parents[1]
- HAIER = "https://gesli.example/sample#Haier"
- class MockDataTest(unittest.TestCase):
- def setUp(self):
- self.repository = RDFRepository(ROOT)
- self.market = MarketService(ROOT, self.repository)
- self.mock_data = LocalMockDataService(ROOT, self.repository, self.market)
- def test_catalog_exposes_local_domain_data(self):
- catalog = self.mock_data.catalog()
- self.assertEqual(catalog["summary"]["in_memory_triple_count"], 0)
- self.assertGreaterEqual(catalog["summary"]["customer_count"], 9)
- self.assertGreaterEqual(catalog["summary"]["quote_count"], 24)
- self.assertGreaterEqual(catalog["summary"]["strategy_count"], 5)
- self.assertTrue(any(row["destination"] == "印度那瓦舍瓦港" for row in catalog["routes"]))
- india_direct = next(row for row in catalog["quotes"] if row["quote_no"] == "SQ-MOCK-IN-NHAVA-DIRECT-001")
- self.assertEqual(india_direct["spot_space_status"], "可立即订舱")
- self.assertEqual(india_direct["spot_space_teu"], 18)
- def test_generated_batch_immediately_joins_recommendation_pool(self):
- before = self.market.recommend(InquiryRequest(customer=HAIER))
- result = self.mock_data.generate(MockBatchRequest(
- origin="青岛港",
- destination="印度那瓦舍瓦港",
- supplier_count=4,
- customer_count=2,
- ))
- after = self.market.recommend(InquiryRequest(
- customer=HAIER,
- destination="印度那瓦舍瓦港",
- requested_departure_date="2026-07-28",
- max_transit_days=30,
- target_amount=46000,
- ))
- self.assertGreater(result["added_triples"], 100)
- self.assertEqual(result["catalog"]["summary"]["in_memory_triple_count"], result["added_triples"])
- self.assertEqual(after["pipeline"]["discovered"], 7)
- self.assertEqual(result["catalog"]["summary"]["customer_count"], 11)
- self.assertTrue(any("印度航线Mock" in name for name in result["suppliers"]))
- def test_reset_discards_only_runtime_mock_data(self):
- baseline = self.repository.triple_count
- self.mock_data.generate(MockBatchRequest(
- origin="青岛港",
- destination="印度金奈港",
- supplier_count=1,
- customer_count=1,
- ))
- reset_catalog = self.mock_data.reset()
- self.assertEqual(self.repository.triple_count, baseline)
- self.assertEqual(reset_catalog["summary"]["in_memory_triple_count"], 0)
- self.assertFalse(any(row["runtime_mock"] for row in reset_catalog["quotes"]))
- if __name__ == "__main__":
- unittest.main()
|