feat(attachments): 新增附件管理页面
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
|
||||
from review_agent.models import Conversation, FileSummaryBatch, Message, WorkflowNodeRun
|
||||
from review_agent.models import Conversation, FileAttachment, FileSummaryBatch, Message, WorkflowNodeRun
|
||||
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
@@ -32,6 +32,82 @@ def test_workspace_renders_summary_panel(client, django_user_model):
|
||||
assert "自动汇总文件目录与页数" in content
|
||||
|
||||
|
||||
def test_workspace_links_to_attachment_manager(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="会话")
|
||||
client.force_login(user)
|
||||
|
||||
response = client.get(f"{reverse('home')}?conversation={conversation.pk}")
|
||||
|
||||
assert response.status_code == 200
|
||||
content = response.content.decode("utf-8")
|
||||
assert "附件管理" in content
|
||||
assert "视频实时监测" not in content
|
||||
assert f'href="{reverse("attachment_manager")}?conversation={conversation.pk}"' in content
|
||||
assert 'class="attachment-manager-link"' in content
|
||||
|
||||
|
||||
def test_attachment_manager_requires_conversation_selection(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
Conversation.objects.create(user=user, title="待选择会话")
|
||||
client.force_login(user)
|
||||
|
||||
response = client.get(reverse("attachment_manager"))
|
||||
|
||||
assert response.status_code == 200
|
||||
content = response.content.decode("utf-8")
|
||||
assert "附件管理" in content
|
||||
assert "请选择一个对话查看附件" in content
|
||||
assert "待选择会话" in content
|
||||
assert 'id="attachmentConversationSelect"' in content
|
||||
|
||||
|
||||
def test_attachment_manager_selects_conversation_and_lists_attachments(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="资料会话")
|
||||
FileAttachment.objects.create(
|
||||
conversation=conversation,
|
||||
user=user,
|
||||
original_name="a.docx",
|
||||
storage_path="x/a.docx",
|
||||
file_size=128,
|
||||
is_active=True,
|
||||
)
|
||||
client.force_login(user)
|
||||
|
||||
response = client.get(f"{reverse('attachment_manager')}?conversation={conversation.pk}")
|
||||
|
||||
assert response.status_code == 200
|
||||
content = response.content.decode("utf-8")
|
||||
assert "资料会话" in content
|
||||
assert "a.docx" in content
|
||||
assert "下载" in content
|
||||
assert "编辑" in content
|
||||
assert "删除" in content
|
||||
assert "attachment-manager-split" in content
|
||||
assert reverse("home") + f"?conversation={conversation.pk}" in content
|
||||
|
||||
|
||||
def test_attachment_manager_uses_compact_admin_layout(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
Conversation.objects.create(user=user, title="紧凑会话")
|
||||
client.force_login(user)
|
||||
|
||||
response = client.get(reverse("attachment_manager"))
|
||||
|
||||
assert response.status_code == 200
|
||||
content = response.content.decode("utf-8")
|
||||
css = open("static/css/login.css", encoding="utf-8").read()
|
||||
assert "attachment-manager-toolbar" in content
|
||||
assert "attachment-manager-content" in content
|
||||
assert "attachment-manager-select-control" in content
|
||||
assert ".attachment-manager-page" in css
|
||||
assert "align-content: start" in css
|
||||
assert ".attachment-manager-toolbar" in css
|
||||
assert ".attachment-manager-select-control" in css
|
||||
assert ".attachment-manager-split" in css
|
||||
|
||||
|
||||
def test_workspace_renders_workflow_history_as_batch_carousel(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="会话")
|
||||
|
||||
Reference in New Issue
Block a user