61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
import unittest
|
|
|
|
from app.services.review_service import ReviewService
|
|
|
|
|
|
class StubRule:
|
|
def __init__(self, name, keyword, risk_level, description, suggestion=None, legal_basis=None):
|
|
self.name = name
|
|
self.keyword = keyword
|
|
self.risk_level = risk_level
|
|
self.description = description
|
|
self.suggestion = suggestion
|
|
self.legal_basis = legal_basis
|
|
|
|
|
|
class StubRuleRepository:
|
|
def __init__(self, rules):
|
|
self.rules = rules
|
|
|
|
def list_active_for_contract_type(self, tenant_id, contract_type):
|
|
return self.rules
|
|
|
|
|
|
class StubReview:
|
|
def __init__(self):
|
|
self.tenant_id = "tenant-demo-001"
|
|
self.title = "采购合同"
|
|
self.contract_type = "procurement"
|
|
self.input_text = "本合同约定自动续约,且付款条件另行协商。"
|
|
|
|
|
|
class ReviewServiceRulesTestCase(unittest.TestCase):
|
|
def test_build_risk_items_uses_active_rules_without_losing_default_fallbacks(self):
|
|
service = ReviewService(db=None)
|
|
service.review_rule_repository = StubRuleRepository(
|
|
[
|
|
StubRule(
|
|
name="自动续约预警",
|
|
keyword="自动续约",
|
|
risk_level="high",
|
|
description="需明确终止条件。",
|
|
suggestion="补充通知期限。",
|
|
legal_basis="《民法典》相关规则。",
|
|
)
|
|
]
|
|
)
|
|
|
|
items = service._build_risk_items(StubReview())
|
|
|
|
self.assertEqual(len(items), 2)
|
|
self.assertEqual(items[0]["title"], "自动续约预警")
|
|
self.assertEqual(items[0]["level"], "high")
|
|
self.assertEqual(items[0]["suggestion"], "补充通知期限。")
|
|
self.assertEqual(items[0]["legal_basis"], "《民法典》相关规则。")
|
|
self.assertEqual(items[1]["title"], "付款条件建议明确")
|
|
self.assertEqual(items[1]["level"], "medium")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|