MCPcopy
hub / github.com/ent/ent / TestQueryNodes

Function TestQueryNodes

dialect/sql/sqlgraph/graph_test.go:2411–2478  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2409}
2410
2411func TestQueryNodes(t *testing.T) {
2412 db, mock, err := sqlmock.New()
2413 require.NoError(t, err)
2414 mock.ExpectQuery(escape("SELECT DISTINCT `users`.`id`, `users`.`age`, `users`.`name`, `users`.`fk1`, `users`.`fk2` FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
2415 WithArgs(40).
2416 WillReturnRows(sqlmock.NewRows([]string{"id", "age", "name", "fk1", "fk2"}).
2417 AddRow(1, 10, nil, nil, nil).
2418 AddRow(2, 20, "", 0, 0).
2419 AddRow(3, 30, "a8m", 1, 1))
2420 mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`id`) FROM `users` WHERE `age` < ? LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
2421 WithArgs(40).
2422 WillReturnRows(sqlmock.NewRows([]string{"COUNT"}).
2423 AddRow(3))
2424 mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`name`) FROM `users` WHERE `age` < ? LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
2425 WithArgs(40).
2426 WillReturnRows(sqlmock.NewRows([]string{"COUNT"}).
2427 AddRow(3))
2428
2429 var (
2430 users []*user
2431 spec = &QuerySpec{
2432 Node: &NodeSpec{
2433 Table: "users",
2434 Columns: []string{"id", "age", "name", "fk1", "fk2"},
2435 ID: &FieldSpec{Column: "id", Type: field.TypeInt},
2436 },
2437 Limit: 3,
2438 Offset: 4,
2439 Unique: true,
2440 Order: func(s *sql.Selector) {
2441 s.OrderBy("id")
2442 },
2443 Predicate: func(s *sql.Selector) {
2444 s.Where(sql.LT("age", 40))
2445 },
2446 Modifiers: []func(*sql.Selector){
2447 func(s *sql.Selector) { s.ForUpdate(sql.WithLockAction(sql.NoWait)) },
2448 },
2449 ScanValues: func(columns []string) ([]any, error) {
2450 u := &user{}
2451 users = append(users, u)
2452 return u.values(columns)
2453 },
2454 Assign: func(columns []string, values []any) error {
2455 return users[len(users)-1].assign(columns, values)
2456 },
2457 }
2458 )
2459
2460 // Query and scan.
2461 err = QueryNodes(context.Background(), sql.OpenDB("", db), spec)
2462 require.NoError(t, err)
2463 require.Equal(t, &user{id: 1, age: 10, name: ""}, users[0])
2464 require.Equal(t, &user{id: 2, age: 20, name: ""}, users[1])
2465 require.Equal(t, &user{id: 3, age: 30, name: "a8m", edges: struct{ fk1, fk2 int }{1, 1}}, users[2])
2466
2467 // Count nodes.
2468 spec.Node.Columns = nil

Callers

nothing calls this directly

Calls 12

valuesMethod · 0.95
LTFunction · 0.92
WithLockActionFunction · 0.92
OpenDBFunction · 0.92
QueryNodesFunction · 0.85
CountNodesFunction · 0.85
NewMethod · 0.80
assignMethod · 0.80
escapeFunction · 0.70
WhereMethod · 0.65
OrderByMethod · 0.45
ForUpdateMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…