github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/gen/test/user_test.go (about) 1 package test 2 3 import ( 4 "testing" 5 6 _ "github.com/go-sql-driver/mysql" 7 "github.com/google/uuid" 8 "github.com/sirupsen/logrus" 9 "github.com/stretchr/testify/assert" 10 11 "github.com/artisanhe/tools/courier/enumeration" 12 "github.com/artisanhe/tools/sqlx" 13 ) 14 15 var db *sqlx.DB 16 17 func init() { 18 logrus.SetLevel(logrus.DebugLevel) 19 db, _ = sqlx.Open("logger:mysql", "root:root@tcp(localhost:3306)/?charset=utf8&parseTime=true&interpolateParams=true&autocommit=true&loc=Local") 20 } 21 22 func TestUserCRUD(t *testing.T) { 23 tt := assert.New(t) 24 25 DBTest.MigrateTo(db, false) 26 DBTest.MigrateTo(db, false) 27 28 defer func() { 29 err := db.Do(DBTest.Drop()).Err() 30 tt.Nil(err) 31 }() 32 33 { 34 user := User{} 35 user.Name = uuid.New().String() 36 37 err := user.Create(db) 38 tt.Nil(err) 39 tt.Equal(uint64(1), user.ID) 40 41 user.Gender = GenderMale 42 { 43 err := user.CreateOnDuplicateWithUpdateFields(db, []string{"Gender"}) 44 tt.Nil(err) 45 } 46 { 47 userForFetch := User{ 48 Name: user.Name, 49 } 50 err := userForFetch.FetchByName(db) 51 tt.Nil(err) 52 53 tt.Equal(user.Gender, userForFetch.Gender) 54 } 55 { 56 { 57 userForDelete := User{ 58 Name: user.Name, 59 } 60 err := userForDelete.SoftDeleteByName(db) 61 tt.Nil(err) 62 63 userForSelect := User{ 64 Name: user.Name, 65 } 66 stmt := userForSelect.T().Select().Where(userForSelect.Fields().Name.Eq(userForSelect.Name)) 67 errForSelect := db.Do(stmt).Scan(&userForSelect).Err() 68 tt.Nil(errForSelect) 69 tt.Equal(enumeration.BOOL__FALSE, userForSelect.Enabled) 70 71 { 72 err := user.Create(db) 73 tt.Nil(err) 74 tt.Equal(uint64(3), user.ID) 75 76 userForDelete := User{} 77 errForSoftDelete := userForDelete.SoftDeleteByName(db) 78 tt.Nil(errForSoftDelete) 79 80 users := []User{} 81 fieldsOfUser := userForSelect.Fields() 82 stmt := user.T().Select().Where(fieldsOfUser.Enabled.Eq(enumeration.BOOL__FALSE)) 83 errForSelect := db.Do(stmt).Scan(&users).Err() 84 tt.Nil(errForSelect) 85 tt.Len(users, 1) 86 tt.Equal(uint64(1), users[0].ID) 87 } 88 } 89 } 90 } 91 } 92 93 func TestUserList(t *testing.T) { 94 tt := assert.New(t) 95 96 DBTest.MigrateTo(db, false) 97 defer func() { 98 err := db.Do(DBTest.Drop()).Err() 99 tt.Nil(err) 100 }() 101 102 createUser := func() { 103 user := User{} 104 user.Name = uuid.New().String() 105 err := user.Create(db) 106 tt.Nil(err) 107 } 108 109 for i := 0; i < 10; i++ { 110 createUser() 111 } 112 113 list := UserList{} 114 count, err := list.FetchList(db, -1, -1) 115 tt.Nil(err) 116 tt.Equal(int32(10), count) 117 tt.Len(list, 10) 118 119 names := []string{} 120 for _, user := range list { 121 names = append(names, user.Name) 122 } 123 124 { 125 126 list2 := UserList{} 127 err := list2.BatchFetchByNameList(db, names) 128 tt.Nil(err) 129 tt.Len(list, 10) 130 } 131 132 }