Files
bDS2/test/bds/desktop/mcp_config_test.exs

83 lines
2.6 KiB
Elixir

defmodule BDS.Desktop.ShellLive.SettingsEditor.MCPConfigTest do
use ExUnit.Case, async: false
alias BDS.Desktop.ShellLive.SettingsEditor.MCPConfig
describe "mcp_rows/0" do
test "returns 7 agent rows" do
rows = MCPConfig.mcp_rows()
assert length(rows) == 7
end
test "has correct agent order" do
rows = MCPConfig.mcp_rows()
ids = Enum.map(rows, & &1.id)
assert ids == [:claude_code, :claude_desktop, :github_copilot, :gemini_cli, :opencode, :mistral_vibe, :openai_codex]
end
test "Claude Code and GitHub Copilot are supported" do
rows = MCPConfig.mcp_rows()
claude = Enum.find(rows, &(&1.id == :claude_code))
copilot = Enum.find(rows, &(&1.id == :github_copilot))
assert claude.supported?
assert copilot.supported?
end
test "other agents are not supported" do
rows = MCPConfig.mcp_rows()
unsupported = Enum.reject(rows, & &1.supported?)
assert length(unsupported) == 5
assert Enum.all?(unsupported, &(!&1.supported?))
end
test "unsupported agents have nil config_path" do
rows = MCPConfig.mcp_rows()
unsupported = Enum.filter(rows, &(!&1.supported?))
assert Enum.all?(unsupported, &is_nil(&1.config_path))
end
test "unsupported agents have configured? false" do
rows = MCPConfig.mcp_rows()
unsupported = Enum.filter(rows, &(!&1.supported?))
assert Enum.all?(unsupported, &(&1.configured? == false))
end
end
describe "toggle_mcp_agent/4" do
test "unsupported agent appends not-supported error" do
socket = %{assigns: %{workbench: nil}}
reload = fn s, _wb -> send(self(), :reloaded); s end
append_output = fn _socket, _title, _msg, _nil, _kind ->
send(self(), :error_appended)
socket
end
MCPConfig.toggle_mcp_agent(socket, "gemini_cli", reload, append_output)
assert_received :error_appended
assert_received :reloaded
end
test "unsupported agent does not touch AgentConfig" do
socket = %{assigns: %{workbench: nil}}
reload = fn s, _wb -> s end
append_output = fn _socket, _title, _msg, _nil, _kind -> socket end
assert MCPConfig.toggle_mcp_agent(socket, "opencode", reload, append_output) == socket
end
test "unknown agent is treated as unsupported" do
socket = %{assigns: %{workbench: nil}}
reload = fn s, _wb -> s end
append_output = fn _socket, _title, _msg, _nil, _kind ->
send(self(), :error_appended)
socket
end
MCPConfig.toggle_mcp_agent(socket, "nonexistent_agent", reload, append_output)
assert_received :error_appended
end
end
end