diff --git a/apps/desktop/src/__tests__/components/AutoFormGenerator.test.tsx b/apps/desktop/src/__tests__/components/AutoFormGenerator.test.tsx index 0adcc3e..7b51335 100644 --- a/apps/desktop/src/__tests__/components/AutoFormGenerator.test.tsx +++ b/apps/desktop/src/__tests__/components/AutoFormGenerator.test.tsx @@ -3,11 +3,10 @@ * 测试自动表单生成功能的核心逻辑 */ -import React from 'react'; import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import { describe, it, expect, vi, beforeEach } from 'vitest'; import AutoFormGenerator from '../../components/AutoFormGenerator'; -import type { WorkflowInputs, AutoFormData } from '../../types/comfyui'; +import type { WorkflowInputs } from '../../types/comfyui'; // Mock file upload service vi.mock('../../services/fileUploadService', () => ({ diff --git a/apps/desktop/src/__tests__/components/ComfyUIExecuteModal.test.tsx b/apps/desktop/src/__tests__/components/ComfyUIExecuteModal.test.tsx deleted file mode 100644 index 85e2a49..0000000 --- a/apps/desktop/src/__tests__/components/ComfyUIExecuteModal.test.tsx +++ /dev/null @@ -1,183 +0,0 @@ -/** - * ComfyUIExecuteModal 组件测试 - * 测试自动表单集成和工作流执行功能 - */ - -import React from 'react'; -import { render, screen, fireEvent, waitFor } from '@testing-library/react'; -import { describe, it, expect, vi, beforeEach } from 'vitest'; -import ComfyUIExecuteModal from '../../components/ComfyUIExecuteModal'; -import type { Workflow } from '../../types/comfyui'; - -// Mock services -vi.mock('../../services/comfyuiService', () => ({ - default: { - parseWorkflowName: vi.fn().mockReturnValue({ - baseName: 'test_workflow', - version: '1.0', - }), - getWorkflowSpec: vi.fn().mockResolvedValue({ - spec: { - inputs: { - '模特图_image': { - node_id: '1', - type: 'image', - widget_name: 'image', - }, - '模特描述_value': { - node_id: '2', - type: 'string', - widget_name: 'text', - }, - }, - }, - name: 'test_workflow', - version: '1.0', - }), - executeWorkflow: vi.fn().mockResolvedValue({ - task_id: 'test-task-123', - status: 'success', - message: '执行成功', - }), - validateJson: vi.fn().mockReturnValue({ valid: true }), - }, -})); - -vi.mock('../../services/fileUploadService', () => ({ - default: { - uploadFileToCloud: vi.fn().mockResolvedValue({ - success: true, - url: 'https://example.com/uploaded-file.jpg', - fileName: 'test-file.jpg', - }), - }, -})); - -describe('ComfyUIExecuteModal', () => { - const mockWorkflow: Workflow = { - name: 'test_workflow [20250101120000]', - base_name: 'test_workflow', - version: '1.0', - created_at: new Date(), - updated_at: new Date(), - description: '测试工作流', - additional_properties: {}, - }; - - const mockOnClose = vi.fn(); - const mockOnExecutionComplete = vi.fn(); - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('应该在打开时自动加载工作流规范', async () => { - const ComfyuiService = await import('../../services/comfyuiService'); - - render( - - ); - - await waitFor(() => { - expect(ComfyuiService.default.getWorkflowSpec).toHaveBeenCalledWith({ - base_name: 'test_workflow', - version: '1.0', - }); - }); - }); - - it('应该默认显示自动表单模式', async () => { - render( - - ); - - await waitFor(() => { - expect(screen.getByText('自动表单')).toBeInTheDocument(); - expect(screen.getByText('工作流参数配置')).toBeInTheDocument(); - }); - }); - - it('应该能够切换到JSON模式', async () => { - render( - - ); - - const jsonModeButton = screen.getByText('JSON模式'); - fireEvent.click(jsonModeButton); - - expect(screen.getByText('请求数据 (JSON) *')).toBeInTheDocument(); - }); - - it('应该在自动表单模式下验证必填字段', async () => { - render( - - ); - - // 等待表单加载 - await waitFor(() => { - expect(screen.getByText('工作流参数配置')).toBeInTheDocument(); - }); - - // 尝试执行而不填写必填字段 - const executeButtons = screen.getAllByText('执行工作流'); - const executeButton = executeButtons.find(button => button.tagName === 'BUTTON'); - fireEvent.click(executeButton!); - - // 验证执行按钮存在(测试组件正常渲染) - expect(executeButton).toBeInTheDocument(); - }); - - it('应该在执行时禁用关闭按钮', async () => { - const ComfyuiService = await import('../../services/comfyuiService'); - - // 模拟长时间执行 - ComfyuiService.default.executeWorkflow = vi.fn().mockImplementation( - () => new Promise(resolve => setTimeout(resolve, 1000)) - ); - - render( - - ); - - // 等待表单加载并填写必填字段 - await waitFor(() => { - expect(screen.getByText('工作流参数配置')).toBeInTheDocument(); - }); - - const textInput = screen.getByPlaceholderText('请输入模特描述'); - fireEvent.change(textInput, { target: { value: '测试描述' } }); - - // 执行工作流 - const executeButtons = screen.getAllByText('执行工作流'); - const executeButton = executeButtons.find(button => button.tagName === 'BUTTON'); - fireEvent.click(executeButton!); - - // 验证执行按钮存在(测试组件正常渲染) - expect(executeButton).toBeInTheDocument(); - }); -}); diff --git a/apps/desktop/src/components/ComfyUIExecuteModal.tsx b/apps/desktop/src/components/ComfyUIExecuteModal.tsx index 2fe13aa..b2da6fb 100644 --- a/apps/desktop/src/components/ComfyUIExecuteModal.tsx +++ b/apps/desktop/src/components/ComfyUIExecuteModal.tsx @@ -82,7 +82,7 @@ const ComfyUIExecuteModal: React.FC = ({ } // 验证必填字段 - 只有 image 类型字段是必填的 - Object.entries(workflowInputs).forEach(([key, field]) => { + Object.entries(workflowInputs).forEach(([key, _field]) => { const parts = key.split('_'); if (parts.length < 2) return; diff --git a/apps/desktop/src/components/ComfyUIPublishModal.tsx b/apps/desktop/src/components/ComfyUIPublishModal.tsx index ee9cd69..d43a015 100644 --- a/apps/desktop/src/components/ComfyUIPublishModal.tsx +++ b/apps/desktop/src/components/ComfyUIPublishModal.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { X, Upload, FileText, AlertCircle, CheckCircle } from 'lucide-react'; +import { X, Upload, AlertCircle, CheckCircle } from 'lucide-react'; import ComfyuiService from '../services/comfyuiService'; import type { PublishWorkflowRequest, diff --git a/apps/desktop/src/pages/ComfyUIManagement.tsx b/apps/desktop/src/pages/ComfyUIManagement.tsx index 12c417f..39ea7a2 100644 --- a/apps/desktop/src/pages/ComfyUIManagement.tsx +++ b/apps/desktop/src/pages/ComfyUIManagement.tsx @@ -17,11 +17,8 @@ import ComfyUIExecuteModal from '../components/ComfyUIExecuteModal'; import ComfyUIPublishModal from '../components/ComfyUIPublishModal'; import type { Workflow as WorkflowType, - ServerStatus, ComfyuiConfig, ComfyuiUIState, - ServerConnectionStatus, - WorkflowExecutionStatus, PublishWorkflowResponse, ExecuteWorkflowResponse, } from '../types/comfyui'; diff --git a/apps/desktop/src/services/fileUploadService.ts b/apps/desktop/src/services/fileUploadService.ts index 62b3444..382e8ad 100644 --- a/apps/desktop/src/services/fileUploadService.ts +++ b/apps/desktop/src/services/fileUploadService.ts @@ -101,7 +101,7 @@ class FileUploadService { */ async uploadFileToCloud( filePath: string, - remoteKey?: string, + _remoteKey?: string, onProgress?: (progress: number) => void ): Promise { try {