Files
ai-contract-platform/backend/tests/test_review_service_rules.py
T

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()