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

Function TestGetSchema_IncludeDetails

backend/api/mcp/tool_schema_test.go:280–330  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

278}
279
280func TestGetSchema_IncludeDetails(t *testing.T) {
281 ordersTable := map[string]any{
282 "name": "orders",
283 "rowCount": "182394",
284 "comment": "Customer orders",
285 "columns": []map[string]any{
286 makeColumnWithDefault("id", "int8", "", "Order ID"),
287 makeColumnWithDefault("user_id", "int4", "", "Customer ref"),
288 makeColumnWithDefault("status", "varchar(32)", "'pending'", "Status flag"),
289 },
290 "indexes": []map[string]any{
291 // Intentionally out of order.
292 makeIndex("orders_user_id_idx", false, []string{"user_id"}),
293 makePrimaryKeyIndex("orders_pkey", []string{"id"}),
294 },
295 "foreignKeys": []map[string]any{
296 {
297 "name": "orders_user_id_fkey",
298 "columns": []string{"user_id"},
299 "referencedTable": "users",
300 "referencedColumns": []string{"id"},
301 },
302 },
303 }
304 resp := makeMetadataResponse(makeSchema("public", ordersTable))
305
306 s, _ := mockMetadataServer(t, employeeDB(), resp)
307
308 result, structured, err := s.handleGetSchema(testContext(), nil, SchemaInput{
309 Database: "employee_db",
310 Include: "details",
311 })
312 require.NoError(t, err)
313 require.False(t, result.IsError)
314
315 output, ok := structured.(*SchemaOutput)
316 require.True(t, ok)
317 orders := output.Schemas[0].Tables[0]
318 require.Equal(t, "Customer orders", orders.Comment)
319 // Column defaults and comments populated.
320 require.Equal(t, "'pending'", orders.Columns[2].Default)
321 require.Equal(t, "Status flag", orders.Columns[2].Comment)
322 // Indexes sorted alphabetically.
323 require.Len(t, orders.Indexes, 2)
324 require.Equal(t, "orders_pkey", orders.Indexes[0].Name)
325 require.Equal(t, "orders_user_id_idx", orders.Indexes[1].Name)
326 // FKs present.
327 require.Len(t, orders.ForeignKeys, 1)
328 require.Equal(t, "orders_user_id_fkey", orders.ForeignKeys[0].Name)
329 require.Equal(t, "users", orders.ForeignKeys[0].ReferencedTable)
330}
331
332func TestGetSchema_TableFilter_ServerSideFilter(t *testing.T) {
333 ordersTable := makeTable("orders", 182394,

Callers

nothing calls this directly

Calls 11

makeColumnWithDefaultFunction · 0.85
makePrimaryKeyIndexFunction · 0.85
makeMetadataResponseFunction · 0.85
mockMetadataServerFunction · 0.85
employeeDBFunction · 0.85
testContextFunction · 0.85
handleGetSchemaMethod · 0.80
LenMethod · 0.80
makeIndexFunction · 0.70
makeSchemaFunction · 0.70
EqualMethod · 0.65

Tested by

no test coverage detected