(t *testing.T)
| 353 | } |
| 354 | |
| 355 | func TestGetSchema_TableImpliesDetails(t *testing.T) { |
| 356 | ordersTable := map[string]any{ |
| 357 | "name": "orders", |
| 358 | "rowCount": "182394", |
| 359 | "comment": "Customer orders", |
| 360 | "columns": []map[string]any{ |
| 361 | makeColumnWithDefault("id", "int8", "", "Order ID"), |
| 362 | }, |
| 363 | "indexes": []map[string]any{makePrimaryKeyIndex("orders_pkey", []string{"id"})}, |
| 364 | "foreignKeys": []map[string]any{ |
| 365 | { |
| 366 | "name": "orders_user_id_fkey", |
| 367 | "columns": []string{"user_id"}, |
| 368 | "referencedTable": "users", |
| 369 | "referencedColumns": []string{"id"}, |
| 370 | }, |
| 371 | }, |
| 372 | } |
| 373 | resp := makeMetadataResponse(makeSchema("public", ordersTable)) |
| 374 | |
| 375 | s, _ := mockMetadataServer(t, employeeDB(), resp) |
| 376 | |
| 377 | result, structured, err := s.handleGetSchema(testContext(), nil, SchemaInput{ |
| 378 | Database: "employee_db", |
| 379 | Table: "orders", |
| 380 | // Include not set → should default to details. |
| 381 | }) |
| 382 | require.NoError(t, err) |
| 383 | require.False(t, result.IsError) |
| 384 | |
| 385 | output, ok := structured.(*SchemaOutput) |
| 386 | require.True(t, ok) |
| 387 | require.NotNil(t, output.Table) |
| 388 | // Details level: indexes and FKs are populated. |
| 389 | require.NotEmpty(t, output.Table.Indexes) |
| 390 | require.NotEmpty(t, output.Table.ForeignKeys) |
| 391 | // Column comment (details-only field) populated. |
| 392 | require.Equal(t, "Order ID", output.Table.Columns[0].Comment) |
| 393 | } |
| 394 | |
| 395 | func TestGetSchema_TableNotFound_RefetchesForCandidates(t *testing.T) { |
| 396 | // First call: server-side filter returns nothing. |
nothing calls this directly
no test coverage detected