78 lines
3.0 KiB
Python
78 lines
3.0 KiB
Python
import pytest
|
|
from django.urls import reverse
|
|
|
|
from review_agent.models import ApplicationFormFillBatch, Conversation, FileSummaryBatch, WorkflowNodeRun
|
|
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
def test_workspace_renders_application_form_fill_workflow_card(client, django_user_model):
|
|
user = django_user_model.objects.create_user(username="owner", password="pass")
|
|
conversation = Conversation.objects.create(user=user, title="会话")
|
|
summary = FileSummaryBatch.objects.create(conversation=conversation, user=user, batch_no="FS-CARD")
|
|
batch = ApplicationFormFillBatch.objects.create(
|
|
conversation=conversation,
|
|
user=user,
|
|
source_summary_batch=summary,
|
|
batch_no="AFF-CARD",
|
|
status=ApplicationFormFillBatch.Status.PARTIAL_SUCCESS,
|
|
selected_templates=["registration_certificate"],
|
|
risk_notes=[{"type": "pdf_pending"}],
|
|
)
|
|
WorkflowNodeRun.objects.create(
|
|
workflow_type="application_form_fill",
|
|
workflow_batch_id=batch.pk,
|
|
node_group="form_fill",
|
|
node_code="word_fill",
|
|
node_name="填写 Word",
|
|
status=WorkflowNodeRun.Status.SUCCESS,
|
|
progress=100,
|
|
)
|
|
client.force_login(user)
|
|
|
|
response = client.get(f"{reverse('chat')}?conversation={conversation.pk}")
|
|
|
|
content = response.content.decode("utf-8")
|
|
assert "AFF-CARD" in content
|
|
assert 'data-workflow-type="application_form_fill"' in content
|
|
assert "填写 Word" in content
|
|
assert "data-application-form-fill-status-url-template" in content
|
|
|
|
|
|
def test_frontend_selects_application_form_fill_status_url_and_terminal_status():
|
|
script = open("static/js/app.js", encoding="utf-8").read()
|
|
|
|
assert 'workflow_type === "application_form_fill"' in script
|
|
assert "data-application-form-fill-status-url-template" in script
|
|
assert 'status === "partial_success"' in script
|
|
|
|
|
|
def test_application_form_fill_status_includes_no_feishu_notification(client, django_user_model):
|
|
user = django_user_model.objects.create_user(username="owner", password="pass")
|
|
conversation = Conversation.objects.create(user=user, title="会话")
|
|
summary = FileSummaryBatch.objects.create(conversation=conversation, user=user, batch_no="FS-AFF")
|
|
batch = ApplicationFormFillBatch.objects.create(
|
|
conversation=conversation,
|
|
user=user,
|
|
source_summary_batch=summary,
|
|
batch_no="AFF-FEISHU",
|
|
)
|
|
client.force_login(user)
|
|
|
|
response = client.get(f"/api/review-agent/application-form-fill/{batch.pk}/status/")
|
|
|
|
payload = response.json()
|
|
assert payload["latest_notification"] is None
|
|
assert payload["notifications"] == []
|
|
|
|
|
|
def test_frontend_renders_feishu_notification_status():
|
|
script = open("static/js/app.js", encoding="utf-8").read()
|
|
css = open("static/css/login.css", encoding="utf-8").read()
|
|
|
|
assert "renderNotificationSummary" in script
|
|
assert "暂无飞书通知记录" in script
|
|
assert "workflow-notification" in script
|
|
assert ".workflow-notification" in css
|