test(regulatory-info-package): 覆盖材料包主链路
This commit is contained in:
109
tests/test_regulatory_info_package_models.py
Normal file
109
tests/test_regulatory_info_package_models.py
Normal file
@@ -0,0 +1,109 @@
|
||||
import pytest
|
||||
from django.db import IntegrityError
|
||||
|
||||
from review_agent.models import (
|
||||
Conversation,
|
||||
ExportedSummaryFile,
|
||||
FileAttachment,
|
||||
RegulatoryInfoPackageArtifact,
|
||||
RegulatoryInfoPackageBatch,
|
||||
RegulatoryInfoPackageNotificationRecord,
|
||||
WorkflowNodeRun,
|
||||
)
|
||||
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_regulatory_info_package_batch_defaults(django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="会话")
|
||||
attachment = FileAttachment.objects.create(
|
||||
conversation=conversation,
|
||||
user=user,
|
||||
original_name="目标产品说明书.docx",
|
||||
storage_path="uploads/instruction.docx",
|
||||
)
|
||||
|
||||
batch = RegulatoryInfoPackageBatch.objects.create(
|
||||
conversation=conversation,
|
||||
user=user,
|
||||
source_attachment=attachment,
|
||||
batch_no="RIP-20260610153000-abcdef",
|
||||
source_file_name=attachment.original_name,
|
||||
source_storage_path=attachment.storage_path,
|
||||
)
|
||||
|
||||
assert batch.status == RegulatoryInfoPackageBatch.Status.PENDING
|
||||
assert batch.output_zip_name == "第1章 监管信息(预生成版).zip"
|
||||
assert batch.generated_files == []
|
||||
assert batch.missing_fields == []
|
||||
assert batch.llm_only_fields == []
|
||||
assert batch.conflict_fields == []
|
||||
assert batch.risk_notes == []
|
||||
assert batch.adapter_summary == {}
|
||||
assert str(batch) == "RIP-20260610153000-abcdef"
|
||||
|
||||
|
||||
def test_regulatory_info_package_artifact_and_notification(django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="会话")
|
||||
batch = RegulatoryInfoPackageBatch.objects.create(
|
||||
conversation=conversation,
|
||||
user=user,
|
||||
batch_no="RIP-20260610153100-abcdef",
|
||||
)
|
||||
|
||||
artifact = RegulatoryInfoPackageArtifact.objects.create(
|
||||
batch=batch,
|
||||
artifact_type=RegulatoryInfoPackageArtifact.ArtifactType.ZIP_PACKAGE,
|
||||
file_format=RegulatoryInfoPackageArtifact.FileFormat.ZIP,
|
||||
name="主下载包",
|
||||
file_name="第1章 监管信息(预生成版).zip",
|
||||
storage_path="media/regulatory_info_package/package.zip",
|
||||
)
|
||||
notification = RegulatoryInfoPackageNotificationRecord.objects.create(
|
||||
batch=batch,
|
||||
recipient=user,
|
||||
export_ids=[1, 2],
|
||||
message_summary="材料包已生成",
|
||||
send_status=RegulatoryInfoPackageNotificationRecord.SendStatus.SUCCESS,
|
||||
)
|
||||
|
||||
assert artifact.metadata == {}
|
||||
assert artifact.is_deleted is False
|
||||
assert notification.channel == RegulatoryInfoPackageNotificationRecord.Channel.MOCK
|
||||
assert notification.retry_count == 0
|
||||
|
||||
|
||||
def test_exported_summary_file_supports_zip_type():
|
||||
values = {value for value, _label in ExportedSummaryFile.ExportType.choices}
|
||||
|
||||
assert "zip" in values
|
||||
|
||||
|
||||
def test_workflow_node_run_unique_for_workflow_batch(django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="会话")
|
||||
batch = RegulatoryInfoPackageBatch.objects.create(
|
||||
conversation=conversation,
|
||||
user=user,
|
||||
batch_no="RIP-20260610153200-abcdef",
|
||||
)
|
||||
|
||||
WorkflowNodeRun.objects.create(
|
||||
workflow_type="regulatory_info_package",
|
||||
workflow_batch_id=batch.pk,
|
||||
node_group="regulatory_info_package",
|
||||
node_code="prepare",
|
||||
node_name="准备资料",
|
||||
)
|
||||
|
||||
with pytest.raises(IntegrityError):
|
||||
WorkflowNodeRun.objects.create(
|
||||
workflow_type="regulatory_info_package",
|
||||
workflow_batch_id=batch.pk,
|
||||
node_group="regulatory_info_package",
|
||||
node_code="prepare",
|
||||
node_name="准备资料",
|
||||
)
|
||||
Reference in New Issue
Block a user