| 2524 | } |
| 2525 | |
| 2526 | func TestQueryEdges(t *testing.T) { |
| 2527 | db, mock, err := sqlmock.New() |
| 2528 | require.NoError(t, err) |
| 2529 | mock.ExpectQuery(escape("SELECT `group_id`, `user_id` FROM `user_groups` WHERE `user_id` IN (?, ?, ?)")). |
| 2530 | WithArgs(1, 2, 3). |
| 2531 | WillReturnRows(sqlmock.NewRows([]string{"group_id", "user_id"}). |
| 2532 | AddRow(4, 5). |
| 2533 | AddRow(4, 6)) |
| 2534 | |
| 2535 | var ( |
| 2536 | edges [][]int64 |
| 2537 | spec = &EdgeQuerySpec{ |
| 2538 | Edge: &EdgeSpec{ |
| 2539 | Inverse: true, |
| 2540 | Table: "user_groups", |
| 2541 | Columns: []string{"user_id", "group_id"}, |
| 2542 | }, |
| 2543 | Predicate: func(s *sql.Selector) { |
| 2544 | s.Where(sql.InValues("user_id", 1, 2, 3)) |
| 2545 | }, |
| 2546 | ScanValues: func() [2]any { |
| 2547 | return [2]any{&sql.NullInt64{}, &sql.NullInt64{}} |
| 2548 | }, |
| 2549 | Assign: func(out, in any) error { |
| 2550 | o, i := out.(*sql.NullInt64), in.(*sql.NullInt64) |
| 2551 | edges = append(edges, []int64{o.Int64, i.Int64}) |
| 2552 | return nil |
| 2553 | }, |
| 2554 | } |
| 2555 | ) |
| 2556 | |
| 2557 | // Query and scan. |
| 2558 | err = QueryEdges(context.Background(), sql.OpenDB("", db), spec) |
| 2559 | require.NoError(t, err) |
| 2560 | require.Equal(t, [][]int64{{4, 5}, {4, 6}}, edges) |
| 2561 | } |
| 2562 | |
| 2563 | func TestQueryEdgesSchema(t *testing.T) { |
| 2564 | db, mock, err := sqlmock.New() |