MCPcopy Create free account
hub / github.com/bytebase/bytebase / TestQueryDatabase_FullFlow

Function TestQueryDatabase_FullFlow

backend/api/mcp/tool_query_test.go:458–492  ·  view source on GitHub ↗

--- Task 5 tests: query execution ---

(t *testing.T)

Source from the content-addressed store, hash-verified

456// --- Task 5 tests: query execution ---
457
458func TestQueryDatabase_FullFlow(t *testing.T) {
459 databases := []map[string]any{
460 makeDatabase("instances/prod-pg/databases/employee_db", "instances/prod-pg", "projects/hr-system", "POSTGRES", "ds-admin-1"),
461 }
462 qr := makeQueryResponse(
463 []string{"id", "name"},
464 []string{"int4", "varchar"},
465 [][]any{{"1", "John"}, {"2", "Jane"}},
466 "0.012s",
467 )
468 s := newTestServerWithMock(t, mockQueryServer(databases, qr))
469
470 result, structured, err := s.handleQueryDatabase(testContext(), nil, QueryInput{
471 Database: "employee_db",
472 Statement: "SELECT id, name FROM users",
473 })
474 require.NoError(t, err)
475 require.False(t, result.IsError)
476
477 output, ok := structured.(*QueryOutput)
478 require.True(t, ok)
479 require.Equal(t, []string{"id", "name"}, output.Columns)
480 require.Equal(t, []string{"int4", "varchar"}, output.ColumnTypes)
481 require.Equal(t, 2, output.RowCount)
482 require.False(t, output.Truncated)
483 require.Equal(t, int64(12), output.LatencyMs)
484 require.Len(t, output.Rows, 2)
485 require.Equal(t, "1", output.Rows[0][0])
486 require.Equal(t, "John", output.Rows[0][1])
487
488 // Verify text header.
489 text := result.Content[0].(*mcpsdk.TextContent).Text
490 require.Contains(t, text, "Result: 2 rows")
491 require.NotContains(t, text, "Truncated")
492}
493
494func TestQueryDatabase_EmptyResult(t *testing.T) {
495 databases := []map[string]any{

Callers

nothing calls this directly

Calls 8

makeQueryResponseFunction · 0.85
newTestServerWithMockFunction · 0.85
mockQueryServerFunction · 0.85
testContextFunction · 0.85
handleQueryDatabaseMethod · 0.80
LenMethod · 0.80
makeDatabaseFunction · 0.70
EqualMethod · 0.65

Tested by

no test coverage detected