feat: update medical training case and auth modules

This commit is contained in:
2026-06-03 17:34:47 +08:00
parent b4bb38b7be
commit fd0b3e1982
45 changed files with 1459 additions and 812 deletions
+9 -2
View File
@@ -4,7 +4,7 @@ from unittest.mock import patch, MagicMock
from django.core.cache import cache
from apps.case.models import CaseBase, TraditionalCase, ScoringRule
from apps.case.models import CaseBase, TraditionalCase, ScoringRule, CaseExamItem
from apps.user.throttling import PdfParseUserThrottle, ScoringRuleGenerateUserThrottle
from .conftest import (
CacheTestCase,
@@ -27,7 +27,9 @@ class CaseFormHappyPathTest(CacheTestCase):
def test_flow_form_create_read_update(self):
"""HP-5: C3 full-create → C4 GET full → C5 PATCH → C4 GET verify"""
# C3: full-create2 条评分规则)
payload = build_traditional_payload(department_name='儿科', scoring_rules_count=2)
payload = build_traditional_payload(
department_name='儿科', scoring_rules_count=2, with_exam_items=True,
)
resp = self.client.post(CASE_FULL_CREATE_URL, payload, format='json')
self.assertEqual(resp.status_code, 201, resp.content)
@@ -38,6 +40,8 @@ class CaseFormHappyPathTest(CacheTestCase):
self.assertIn('traditional', created)
self.assertIsNotNone(created['traditional'])
self.assertEqual(len(created['scoring_rules']), 2)
self.assertEqual(len(created['exam_items']), 1)
self.assertEqual(created['exam_items'][0]['item_code'], 'blood_routine')
# C4: GET full
resp = self.client.get(case_full_url(case_id))
@@ -45,6 +49,7 @@ class CaseFormHappyPathTest(CacheTestCase):
full = resp.json()
self.assertEqual(full['case']['title'], payload['title'])
self.assertEqual(len(full['scoring_rules']), 2)
self.assertEqual(len(full['exam_items']), 1)
# C5: PATCH(改标题 + 改子表 + 替换为 1 条评分规则)
patch_data = {
@@ -77,6 +82,7 @@ class CaseFormHappyPathTest(CacheTestCase):
case = CaseBase.objects.get(id=case_id)
self.assertEqual(case.title, '更新后的标题')
self.assertEqual(ScoringRule.objects.filter(case_id=case_id).count(), 1)
self.assertEqual(CaseExamItem.objects.filter(case_id=case_id).count(), 1)
tc = TraditionalCase.objects.get(case_id=case_id)
self.assertEqual(tc.standard_diagnosis, '更新后的诊断')
@@ -144,6 +150,7 @@ class CasePdfMockHappyPathTest(CacheTestCase):
created = resp.json()
case_id = created['case']['id']
self.assertEqual(len(created['scoring_rules']), len(scoring_rules))
self.assertEqual(len(created['exam_items']), 1)
# C4: GET full
resp = self.client.get(case_full_url(case_id))