(t *testing.T)
| 2478 | } |
| 2479 | |
| 2480 | func TestQueryNodesSchema(t *testing.T) { |
| 2481 | db, mock, err := sqlmock.New() |
| 2482 | require.NoError(t, err) |
| 2483 | mock.ExpectQuery(escape("SELECT DISTINCT `mydb`.`users`.`id`, `mydb`.`users`.`age`, `mydb`.`users`.`name`, `mydb`.`users`.`fk1`, `mydb`.`users`.`fk2` FROM `mydb`.`users` WHERE `age` < ? ORDER BY `id` LIMIT 3 OFFSET 4")). |
| 2484 | WithArgs(40). |
| 2485 | WillReturnRows(sqlmock.NewRows([]string{"id", "age", "name", "fk1", "fk2"}). |
| 2486 | AddRow(1, 10, nil, nil, nil). |
| 2487 | AddRow(2, 20, "", 0, 0). |
| 2488 | AddRow(3, 30, "a8m", 1, 1)) |
| 2489 | var ( |
| 2490 | users []*user |
| 2491 | spec = &QuerySpec{ |
| 2492 | Node: &NodeSpec{ |
| 2493 | Table: "users", |
| 2494 | Schema: "mydb", |
| 2495 | Columns: []string{"id", "age", "name", "fk1", "fk2"}, |
| 2496 | ID: &FieldSpec{Column: "id", Type: field.TypeInt}, |
| 2497 | }, |
| 2498 | Limit: 3, |
| 2499 | Offset: 4, |
| 2500 | Unique: true, |
| 2501 | Order: func(s *sql.Selector) { |
| 2502 | s.OrderBy("id") |
| 2503 | }, |
| 2504 | Predicate: func(s *sql.Selector) { |
| 2505 | s.Where(sql.LT("age", 40)) |
| 2506 | }, |
| 2507 | ScanValues: func(columns []string) ([]any, error) { |
| 2508 | u := &user{} |
| 2509 | users = append(users, u) |
| 2510 | return u.values(columns) |
| 2511 | }, |
| 2512 | Assign: func(columns []string, values []any) error { |
| 2513 | return users[len(users)-1].assign(columns, values) |
| 2514 | }, |
| 2515 | } |
| 2516 | ) |
| 2517 | |
| 2518 | // Query and scan. |
| 2519 | err = QueryNodes(context.Background(), sql.OpenDB("", db), spec) |
| 2520 | require.NoError(t, err) |
| 2521 | require.Equal(t, &user{id: 1, age: 10, name: ""}, users[0]) |
| 2522 | require.Equal(t, &user{id: 2, age: 20, name: ""}, users[1]) |
| 2523 | require.Equal(t, &user{id: 3, age: 30, name: "a8m", edges: struct{ fk1, fk2 int }{1, 1}}, users[2]) |
| 2524 | } |
| 2525 | |
| 2526 | func TestQueryEdges(t *testing.T) { |
| 2527 | db, mock, err := sqlmock.New() |
nothing calls this directly
no test coverage detected
searching dependent graphs…