From b7f2347e866a06785fee80848e3b5cb03f7a2276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Flc=E3=82=9B?= Date: Mon, 13 Mar 2023 15:18:52 +0800 Subject: [PATCH] test: add `TestWhen` --- tests/query_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/query_test.go b/tests/query_test.go index b6bd0736..904bc4d6 100644 --- a/tests/query_test.go +++ b/tests/query_test.go @@ -1380,3 +1380,40 @@ func TestQueryError(t *testing.T) { }, Value: 1}).Scan(&p2).Error AssertEqual(t, err, gorm.ErrModelValueRequired) } + +func TestWhen(t *testing.T) { + users := []User{ + {Name: "when_1", Age: 10}, + {Name: "when_2", Age: 20}, + {Name: "when_3", Age: 30}, + {Name: "when_3", Age: 40}, + } + + if err := DB.Create(&users).Error; err != nil { + t.Fatalf("errors happened when create users: %v", err) + } + + t.Run("When True", func(t *testing.T) { + var trueUser User + if err := DB.Where("name LIKE ?", "when%"). + When(true, func(db *gorm.DB) *gorm.DB { + return db.Where("age <= ?", 20) + }).Order("age Desc").First(&trueUser).Error; err != nil { + t.Errorf("Failed, got error: %v", err) + } else { + CheckUser(t, trueUser, users[1]) + } + }) + + t.Run("When False", func(t *testing.T) { + var falseUser User + if err := DB.Where("name LIKE ?", "when%"). + When(false, func(db *gorm.DB) *gorm.DB { + return db.Where("age <= ?", 20) + }).Order("age Desc").First(&falseUser).Error; err != nil { + t.Errorf("Failed, got error: %v", err) + } else { + CheckUser(t, falseUser, users[3]) + } + }) +}