test_mock_data.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from pathlib import Path
  2. import unittest
  3. from app.market import MarketService
  4. from app.market.models import InquiryRequest
  5. from app.mock_data import LocalMockDataService, MockBatchRequest
  6. from app.repository import RDFRepository
  7. ROOT = Path(__file__).resolve().parents[1]
  8. HAIER = "https://gesli.example/sample#Haier"
  9. class MockDataTest(unittest.TestCase):
  10. def setUp(self):
  11. self.repository = RDFRepository(ROOT)
  12. self.market = MarketService(ROOT, self.repository)
  13. self.mock_data = LocalMockDataService(ROOT, self.repository, self.market)
  14. def test_catalog_exposes_local_domain_data(self):
  15. catalog = self.mock_data.catalog()
  16. self.assertEqual(catalog["summary"]["in_memory_triple_count"], 0)
  17. self.assertGreaterEqual(catalog["summary"]["customer_count"], 7)
  18. self.assertGreaterEqual(catalog["summary"]["quote_count"], 18)
  19. self.assertGreaterEqual(catalog["summary"]["strategy_count"], 3)
  20. def test_generated_batch_immediately_joins_recommendation_pool(self):
  21. before = self.market.recommend(InquiryRequest(customer=HAIER))
  22. result = self.mock_data.generate(MockBatchRequest(
  23. origin="青岛港",
  24. destination="洛杉矶港",
  25. supplier_count=2,
  26. customer_count=1,
  27. ))
  28. after = self.market.recommend(InquiryRequest(customer=HAIER))
  29. self.assertGreater(result["added_triples"], 100)
  30. self.assertEqual(result["catalog"]["summary"]["in_memory_triple_count"], result["added_triples"])
  31. self.assertEqual(after["pipeline"]["discovered"], before["pipeline"]["discovered"] + 2)
  32. self.assertEqual(result["catalog"]["summary"]["customer_count"], 8)
  33. def test_reset_discards_only_runtime_mock_data(self):
  34. baseline = self.repository.triple_count
  35. self.mock_data.generate(MockBatchRequest(
  36. origin="青岛港",
  37. destination="汉堡港",
  38. supplier_count=1,
  39. customer_count=1,
  40. ))
  41. reset_catalog = self.mock_data.reset()
  42. self.assertEqual(self.repository.triple_count, baseline)
  43. self.assertEqual(reset_catalog["summary"]["in_memory_triple_count"], 0)
  44. self.assertFalse(any(row["runtime_mock"] for row in reset_catalog["quotes"]))
  45. if __name__ == "__main__":
  46. unittest.main()