Может кто-нибудь помочь мне написать тесты для этой функции: она используется для выбора таблицы users
и на основе ее вывода os.Stdin
используется для ввода данных для следующей операции:
func FindUser() (*model.User, error) {
users := []model.User{}
user := model.User{}
db, err := gorm.Open("mysql", "root:password@/d2h?charset=utf8&parseTime=True&loc=Local")
if err != nil {
log.Panic("Failed to connect database")
}
err = db.Find(&users).Error
if err != nil {
fmt.Printf("No Users Found In The Database!\n")
return nil, err
}
for _, v := range users {
fmt.Println("ID:", v.ID, "Name:", v.Name)
}
fmt.Printf("\nEnter ID Associated:")
reader := bufio.NewReader(os.Stdin)
char, _, err := reader.ReadRune()
if err != nil {
fmt.Println(err)
}
id, err := strconv.Atoi(string(char))
fmt.Printf("You choose :%d\n\n", id)
err = db.Where("id=?", id).First(&user).Error
if err != nil {
fmt.Printf("No User Found with Username\n")
return nil, err
}
return &user, nil
}
Структура, которую он возвращает, выглядит так:
type User struct {
ID int `gorm:"id"`
Name string `gorm:"name"`
Balance uint `gorm:"balance"`
Email string `gorm:"email"`
Phone string `gorm:"phone"`
CreatedAt time.Time `gorm:"created_at"`
UpdatedAt time.Time `gorm:"updated_at"`
DeletedAt *time.Time `gorm:"deleted_at"`
}
Я думаю, что мне надо издеваться:
reader := bufio.NewReader(os.Stdin)
char, _, err := reader.ReadRune()
Но я не уверен, как это издеваться?