Files

1 line
8.0 KiB
JSON

{"repo": "0xzknw/vibe-trading-tap", "files": {"frontend/src/pages/__tests__/SettingsChannels.test.tsx": {"f51fc8f829da04d13cfe1e54f83525e973a4cbf3": {"t": 1785747463.951992, "n": 3702, "h": "46dc8cb65b9446e8", "c": "import { fireEvent, render, screen, waitFor } from \"@testing-library/react\";\nimport { Settings } from \"../Settings\";\n\nconst apiMock = vi.hoisted(() => ({\n getLLMSettings: vi.fn(),\n getDataSourceSettings: vi.fn(),\n getChannelStatus: vi.fn(),\n startChannels: vi.fn(),\n stopChannels: vi.fn(),\n updateLLMSettings: vi.fn(),\n updateDataSourceSettings: vi.fn(),\n}));\n\nvi.mock(\"@/lib/api\", async () => {\n const actual = await vi.importActual<typeof import(\"@/lib/api\")>(\"@/lib/api\");\n return {\n ...actual,\n api: apiMock,\n isAuthRequiredError: vi.fn(() => false),\n };\n});\n\nvi.mock(\"@/lib/apiAuth\", () => ({\n getApiAuthKey: vi.fn(() => \"\"),\n setApiAuthKey: vi.fn(),\n}));\n\nfunction llmSettings() {\n return {\n provider: \"openrouter\",\n model_name: \"deepseek/deepseek-v3.2\",\n base_url: \"https://openrouter.ai/api/v1\",\n api_key_env: \"OPENROUTER_API_KEY\",\n api_key_configured: false,\n api_key_required: true,\n temperature: 0.1,\n timeout_seconds: 120,\n max_retries: 2,\n reasoning_effort: \"\",\n sse_timeout_seconds: 300,\n env_path: \"agent/.env\",\n providers: [\n {\n name: \"openrouter\",\n label: \"OpenRouter\",\n api_key_env: \"OPENROUTER_API_KEY\",\n base_url_env: \"OPENROUTER_BASE_URL\",\n default_model: \"deepseek/deepseek-v3.2\",\n default_base_url: \"https://openrouter.ai/api/v1\",\n api_key_required: true,\n auth_type: \"api_key\",\n },\n ],\n };\n}\n\nfunction dataSourceSettings() {\n return {\n tushare_token_configured: false,\n baostock_supported: true,\n baostock_installed: true,\n baostock_message: \"BaoStock available\",\n env_path: \"agent/.env\",\n };\n}\n\nfunction channelStatus(overrides = {}) {\n return {\n running: false,\n inbound_queue: 0,\n outbound_queue: 0,\n session_count: 0,\n channels: {\n websocket: {\n name: \"websocket\",\n display_name: \"WebSocket\",\n configured: true,\n enabled: true,\n available: true,\n loaded: true,\n running: false,\n error: \"\",\n install_hint: \"\",\n },\n telegram: {\n name: \"telegram\",\n display_name: \"Telegram\",\n configured: true,\n enabled: false,\n available: false,\n loaded: false,\n running: false,\n error: \"ModuleNotFoundError\",\n install_hint: \"pip install 'vibe-trading-ai[telegram]'\",\n },\n },\n ...overrides,\n };\n}\n\ndescribe(\"Settings IM channels panel\", () => {\n beforeEach(() => {\n apiMock.getLLMSettings.mockResolvedValue(llmSettings());\n apiMock.getDataSourceSettings.mockResolvedValue(dataSourceSettings());\n apiMock.getChannelStatus.mockResolvedValue(channelStatus());\n apiMock.startChannels.mockResolvedValue(channelStatus({ running: true }));\n apiMock.stopChannels.mockResolvedValue(channelStatus());\n });\n\n it(\"renders channel runtime status and refreshes it\", async () => {\n render(<Settings />);\n\n expect(await screen.findByText(\"IM Channels\")).toBeInTheDocument();\n expect(screen.getByText(\"websocket\")).toBeInTheDocument();\n expect(screen.getByText(\"telegram\")).toBeInTheDocument();\n expect(screen.getByText(\"pip install 'vibe-trading-ai[telegram]'\")).toBeInTheDocument();\n\n fireEvent.click(screen.getByRole(\"button\", { name: \"Refresh\" }));\n\n await waitFor(() => expect(apiMock.getChannelStatus).toHaveBeenCalledTimes(2));\n });\n\n it(\"starts channels from the settings control surface\", async () => {\n render(<Settings />);\n await screen.findByText(\"IM Channels\");\n\n fireEvent.click(screen.getByRole(\"button\", { name: \"Start channels\" }));\n\n await waitFor(() => expect(apiMock.startChannels).toHaveBeenCalledTimes(1));\n });\n});\n"}, "681360f4a899039a827b1ac9746e8dc8bcaa1b3e": {"t": 1785773411.7372255, "n": 3702, "h": "46dc8cb65b9446e8", "c": "import { fireEvent, render, screen, waitFor } from \"@testing-library/react\";\nimport { Settings } from \"../Settings\";\n\nconst apiMock = vi.hoisted(() => ({\n getLLMSettings: vi.fn(),\n getDataSourceSettings: vi.fn(),\n getChannelStatus: vi.fn(),\n startChannels: vi.fn(),\n stopChannels: vi.fn(),\n updateLLMSettings: vi.fn(),\n updateDataSourceSettings: vi.fn(),\n}));\n\nvi.mock(\"@/lib/api\", async () => {\n const actual = await vi.importActual<typeof import(\"@/lib/api\")>(\"@/lib/api\");\n return {\n ...actual,\n api: apiMock,\n isAuthRequiredError: vi.fn(() => false),\n };\n});\n\nvi.mock(\"@/lib/apiAuth\", () => ({\n getApiAuthKey: vi.fn(() => \"\"),\n setApiAuthKey: vi.fn(),\n}));\n\nfunction llmSettings() {\n return {\n provider: \"openrouter\",\n model_name: \"deepseek/deepseek-v3.2\",\n base_url: \"https://openrouter.ai/api/v1\",\n api_key_env: \"OPENROUTER_API_KEY\",\n api_key_configured: false,\n api_key_required: true,\n temperature: 0.1,\n timeout_seconds: 120,\n max_retries: 2,\n reasoning_effort: \"\",\n sse_timeout_seconds: 300,\n env_path: \"agent/.env\",\n providers: [\n {\n name: \"openrouter\",\n label: \"OpenRouter\",\n api_key_env: \"OPENROUTER_API_KEY\",\n base_url_env: \"OPENROUTER_BASE_URL\",\n default_model: \"deepseek/deepseek-v3.2\",\n default_base_url: \"https://openrouter.ai/api/v1\",\n api_key_required: true,\n auth_type: \"api_key\",\n },\n ],\n };\n}\n\nfunction dataSourceSettings() {\n return {\n tushare_token_configured: false,\n baostock_supported: true,\n baostock_installed: true,\n baostock_message: \"BaoStock available\",\n env_path: \"agent/.env\",\n };\n}\n\nfunction channelStatus(overrides = {}) {\n return {\n running: false,\n inbound_queue: 0,\n outbound_queue: 0,\n session_count: 0,\n channels: {\n websocket: {\n name: \"websocket\",\n display_name: \"WebSocket\",\n configured: true,\n enabled: true,\n available: true,\n loaded: true,\n running: false,\n error: \"\",\n install_hint: \"\",\n },\n telegram: {\n name: \"telegram\",\n display_name: \"Telegram\",\n configured: true,\n enabled: false,\n available: false,\n loaded: false,\n running: false,\n error: \"ModuleNotFoundError\",\n install_hint: \"pip install 'vibe-trading-ai[telegram]'\",\n },\n },\n ...overrides,\n };\n}\n\ndescribe(\"Settings IM channels panel\", () => {\n beforeEach(() => {\n apiMock.getLLMSettings.mockResolvedValue(llmSettings());\n apiMock.getDataSourceSettings.mockResolvedValue(dataSourceSettings());\n apiMock.getChannelStatus.mockResolvedValue(channelStatus());\n apiMock.startChannels.mockResolvedValue(channelStatus({ running: true }));\n apiMock.stopChannels.mockResolvedValue(channelStatus());\n });\n\n it(\"renders channel runtime status and refreshes it\", async () => {\n render(<Settings />);\n\n expect(await screen.findByText(\"IM Channels\")).toBeInTheDocument();\n expect(screen.getByText(\"websocket\")).toBeInTheDocument();\n expect(screen.getByText(\"telegram\")).toBeInTheDocument();\n expect(screen.getByText(\"pip install 'vibe-trading-ai[telegram]'\")).toBeInTheDocument();\n\n fireEvent.click(screen.getByRole(\"button\", { name: \"Refresh\" }));\n\n await waitFor(() => expect(apiMock.getChannelStatus).toHaveBeenCalledTimes(2));\n });\n\n it(\"starts channels from the settings control surface\", async () => {\n render(<Settings />);\n await screen.findByText(\"IM Channels\");\n\n fireEvent.click(screen.getByRole(\"button\", { name: \"Start channels\" }));\n\n await waitFor(() => expect(apiMock.startChannels).toHaveBeenCalledTimes(1));\n });\n});\n"}}}}