Roo-Code/src/shared/__tests__/combineCommandSequences.spec.ts
Chris Estreich 62c3914034
Farewell jest (#4607)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-06-16 21:39:45 -07:00

186 lines
4.9 KiB
TypeScript

// npx vitest run src/shared/__tests__/combineCommandSequences.spec.ts
import type { ClineMessage } from "@roo-code/types"
import { combineCommandSequences } from "../combineCommandSequences"
describe("combineCommandSequences", () => {
describe("command sequences", () => {
it("should combine command and command_output messages", () => {
const messages: ClineMessage[] = [
{ type: "ask", ask: "command", text: "ls", ts: 1625097600000 },
{ type: "ask", ask: "command_output", text: "file1.txt", ts: 1625097601000 },
{ type: "ask", ask: "command_output", text: "file2.txt", ts: 1625097602000 },
]
const result = combineCommandSequences(messages)
expect(result).toHaveLength(1)
expect(result[0]).toEqual({
type: "ask",
ask: "command",
text: "ls\nOutput:file1.txt\nfile2.txt",
ts: 1625097600000,
})
})
})
describe("MCP server responses", () => {
it("should combine use_mcp_server and mcp_server_response messages", () => {
const messages: ClineMessage[] = [
{
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server",
toolName: "test-tool",
arguments: { param: "value" },
}),
ts: 1625097600000,
},
{ type: "say", say: "mcp_server_response", text: "Response data", ts: 1625097601000 },
]
const result = combineCommandSequences(messages)
expect(result).toHaveLength(1)
expect(result[0]).toEqual({
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server",
toolName: "test-tool",
arguments: { param: "value" },
response: "Response data",
}),
ts: 1625097600000,
})
})
it("should handle multiple mcp_server_response messages", () => {
const messages: ClineMessage[] = [
{
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server",
toolName: "test-tool",
arguments: { param: "value" },
}),
ts: 1625097600000,
},
{ type: "say", say: "mcp_server_response", text: "First response", ts: 1625097601000 },
{ type: "say", say: "mcp_server_response", text: "Second response", ts: 1625097602000 },
]
const result = combineCommandSequences(messages)
expect(result).toHaveLength(1)
expect(result[0]).toEqual({
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server",
toolName: "test-tool",
arguments: { param: "value" },
response: "First response\nSecond response",
}),
ts: 1625097600000,
})
})
it("should handle multiple MCP server requests", () => {
const messages: ClineMessage[] = [
{
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server-1",
toolName: "test-tool-1",
arguments: { param: "value1" },
}),
ts: 1625097600000,
},
{ type: "say", say: "mcp_server_response", text: "Response 1", ts: 1625097601000 },
{
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server-2",
toolName: "test-tool-2",
arguments: { param: "value2" },
}),
ts: 1625097602000,
},
{ type: "say", say: "mcp_server_response", text: "Response 2", ts: 1625097603000 },
]
const result = combineCommandSequences(messages)
expect(result).toHaveLength(2)
expect(result[0]).toEqual({
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server-1",
toolName: "test-tool-1",
arguments: { param: "value1" },
response: "Response 1",
}),
ts: 1625097600000,
})
expect(result[1]).toEqual({
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server-2",
toolName: "test-tool-2",
arguments: { param: "value2" },
response: "Response 2",
}),
ts: 1625097602000,
})
})
})
describe("mixed sequences", () => {
it("should handle both command and MCP server sequences", () => {
const messages: ClineMessage[] = [
{ type: "ask", ask: "command", text: "ls", ts: 1625097600000 },
{ type: "ask", ask: "command_output", text: "file1.txt", ts: 1625097601000 },
{
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server",
toolName: "test-tool",
arguments: { param: "value" },
}),
ts: 1625097602000,
},
{ type: "say", say: "mcp_server_response", text: "MCP response", ts: 1625097603000 },
]
const result = combineCommandSequences(messages)
expect(result).toHaveLength(2)
expect(result[0]).toEqual({
type: "ask",
ask: "command",
text: "ls\nOutput:file1.txt",
ts: 1625097600000,
})
expect(result[1]).toEqual({
type: "ask",
ask: "use_mcp_server",
text: JSON.stringify({
serverName: "test-server",
toolName: "test-tool",
arguments: { param: "value" },
response: "MCP response",
}),
ts: 1625097602000,
})
})
})
})