From 18a30ada22c965427a783586dc696e77f033c267 Mon Sep 17 00:00:00 2001 From: Mo Huishou <1@lailin.xyz> Date: Tue, 22 Jul 2025 06:41:54 +0000 Subject: [PATCH] feat: add Clauses(clause.OnConflict{UpdateAll: true}) bug test --- main_test.go | 21 +++++++++++++++++++++ models.go | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/main_test.go b/main_test.go index 60a388f7..a9356cf5 100644 --- a/main_test.go +++ b/main_test.go @@ -2,6 +2,8 @@ package main import ( "testing" + + "gorm.io/gorm/clause" ) // GORM_REPO: https://github.com/go-gorm/gorm.git @@ -17,4 +19,23 @@ func TestGORM(t *testing.T) { if err := DB.First(&result, user.ID).Error; err != nil { t.Errorf("Failed, got error: %v", err) } + + user.Company.Name = "test" + err := DB.Clauses(clause.OnConflict{UpdateAll: true}).Create(&user).Error + if err != nil { + t.Errorf("Failed upsert user: %+v", err) + return + } + + err = DB.First(&result, user.ID).Error + if err != nil { + t.Errorf("Failed, got error: %v", err) + return + } + + if result.Company.Name != "test" { + t.Errorf("want test, but got %s", result.Company.Name) + return + } + } diff --git a/models.go b/models.go index 692a6842..9b414048 100644 --- a/models.go +++ b/models.go @@ -20,7 +20,7 @@ type User struct { Pets []*Pet Toys []Toy `gorm:"polymorphic:Owner"` CompanyID *int - Company Company + Company Company `gorm:"default:'{}';serializer:json"` ManagerID *uint Manager *User Team []User `gorm:"foreignkey:ManagerID"`