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

Function TestGetSchema_Summary

backend/api/mcp/tool_schema_test.go:186–234  ·  view source on GitHub ↗

--- Tests ---

(t *testing.T)

Source from the content-addressed store, hash-verified

184// --- Tests ---
185
186func TestGetSchema_Summary(t *testing.T) {
187 usersTable := makeTable("users", 10432,
188 []map[string]any{
189 makeColumn("id", "int4", false),
190 makeColumn("email", "varchar(255)", false),
191 },
192 []map[string]any{makePrimaryKeyIndex("users_pkey", []string{"id"})},
193 )
194 ordersTable := makeTable("orders", 182394,
195 []map[string]any{
196 makeColumn("id", "int8", false),
197 makeColumn("user_id", "int4", false),
198 },
199 []map[string]any{makePrimaryKeyIndex("orders_pkey", []string{"id"})},
200 )
201 // Intentionally out of order to verify sorting.
202 resp := makeMetadataResponse(makeSchemaWithViews("public", []string{"active_users", "recent_orders"}, ordersTable, usersTable))
203
204 s, _ := mockMetadataServer(t, employeeDB(), resp)
205
206 result, structured, err := s.handleGetSchema(testContext(), nil, SchemaInput{
207 Database: "employee_db",
208 })
209 require.NoError(t, err)
210 require.False(t, result.IsError)
211
212 output, ok := structured.(*SchemaOutput)
213 require.True(t, ok)
214 require.Equal(t, "POSTGRES", output.Engine)
215 require.Len(t, output.Schemas, 1)
216 section := output.Schemas[0]
217 require.Equal(t, "public", section.Name)
218 require.Len(t, section.Tables, 2)
219 // Tables sorted alphabetically.
220 require.Equal(t, "orders", section.Tables[0].Name)
221 require.Equal(t, "users", section.Tables[1].Name)
222 // Summary mode has no column details but includes column count.
223 require.Equal(t, 2, section.Tables[0].ColumnCount)
224 require.Equal(t, int64(182394), section.Tables[0].RowCount)
225 require.Empty(t, section.Tables[0].Columns)
226 // Views sorted alphabetically.
227 require.Equal(t, []string{"active_users", "recent_orders"}, section.Views)
228
229 // Text header mentions schema and tables.
230 text := result.Content[0].(*mcpsdk.TextContent).Text
231 require.Contains(t, text, "Database: instances/prod-pg/databases/employee_db (POSTGRES)")
232 require.Contains(t, text, "Schemas: 1 (public)")
233 require.Contains(t, text, "Tables: 2")
234}
235
236func TestGetSchema_IncludeColumns(t *testing.T) {
237 usersTable := makeTable("users", 10432,

Callers

nothing calls this directly

Calls 11

makePrimaryKeyIndexFunction · 0.85
makeMetadataResponseFunction · 0.85
makeSchemaWithViewsFunction · 0.85
mockMetadataServerFunction · 0.85
employeeDBFunction · 0.85
testContextFunction · 0.85
handleGetSchemaMethod · 0.80
LenMethod · 0.80
makeTableFunction · 0.70
makeColumnFunction · 0.70
EqualMethod · 0.65

Tested by

no test coverage detected