forked from go-gorm/playground
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_test.go
48 lines (42 loc) · 992 Bytes
/
main_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package main
import (
"gorm.io/gorm"
"testing"
)
// GORM_REPO: https://github.com/go-gorm/gorm.git
// GORM_BRANCH: master
// TEST_DRIVERS: sqlite, mysql, postgres, sqlserver
func TestPreload(t *testing.T) {
//1.Add User
user := User{Name: "jinzhu"}
DB.Create(&user)
//2.Add 2 Accounts
accounts := []Account{{UserID: user.ID, Number: "1"}, {UserID: user.ID, Number: "2"}}
DB.Create(accounts)
var result User
err := DB.Preload("Account").First(&result).Error
if err != nil {
t.Fail()
}
if len(result.Account) != 2 {
t.Fail()
}
}
func TestPreloadWithSelect(t *testing.T) {
//1.Add User
user := User{Name: "jinzhu"}
DB.Create(&user)
//2.Add 2 Accounts
accounts := []Account{{UserID: user.ID, Number: "1"}, {UserID: user.ID, Number: "2"}}
DB.Create(accounts)
var result User
err := DB.Preload("Account", func(db *gorm.DB) *gorm.DB {
return db.Select("number")
}).First(&result).Error
if err != nil {
t.Fail()
}
if len(result.Account) != 2 {
t.Fail()
}
}