From be276bab4710a3a782d290ae7068bd1dd7959e7a Mon Sep 17 00:00:00 2001 From: molon <3739161+molon@users.noreply.github.com> Date: Sun, 23 Jun 2024 01:51:27 +0800 Subject: [PATCH] add TestMapColumns --- statement.go | 1 + tests/query_test.go | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/statement.go b/statement.go index 7d31088b..39e05d09 100644 --- a/statement.go +++ b/statement.go @@ -514,6 +514,7 @@ func (stmt *Statement) clone() *Statement { Distinct: stmt.Distinct, Selects: stmt.Selects, Omits: stmt.Omits, + ColumnMapping: stmt.ColumnMapping, Preloads: map[string][]interface{}{}, ConnPool: stmt.ConnPool, Schema: stmt.Schema, diff --git a/tests/query_test.go b/tests/query_test.go index e780e3bf..817cf660 100644 --- a/tests/query_test.go +++ b/tests/query_test.go @@ -855,6 +855,28 @@ func TestOmitWithAllFields(t *testing.T) { } } +func TestMapColumns(t *testing.T) { + user := User{Name: "MapColumnsUser", Age: 12} + DB.Save(&user) + + type result struct { + Name string + Nickname string + Age uint + } + var res result + DB.Table("users").Where("name = ?", user.Name).MapColumns(map[string]string{"name": "nickname"}).Scan(&res) + if res.Nickname != user.Name { + t.Errorf("Expected res.Nickname to be %s, but got %s", user.Name, res.Nickname) + } + if res.Name != "" { + t.Errorf("Expected res.Name to be empty, but got %s", res.Name) + } + if res.Age != user.Age { + t.Errorf("Expected res.Age to be %d, but got %d", user.Age, res.Age) + } +} + func TestPluckWithSelect(t *testing.T) { users := []User{ {Name: "pluck_with_select_1", Age: 25}, @@ -1189,7 +1211,6 @@ func TestSubQueryWithRaw(t *testing.T) { Where("age >= ? and name in (?)", 20, []string{"subquery_raw_1", "subquery_raw_3"}). Group("name"), ).Count(&count).Error - if err != nil { t.Errorf("Expected to get no errors, but got %v", err) } @@ -1205,7 +1226,6 @@ func TestSubQueryWithRaw(t *testing.T) { Not("age <= ?", 10).Not("name IN (?)", []string{"subquery_raw_1", "subquery_raw_3"}). Group("name"), ).Count(&count).Error - if err != nil { t.Errorf("Expected to get no errors, but got %v", err) }