Skip to content

Commit ca3e76f

Browse files
committed
test: FullSaveAssociations test
1 parent 6aee054 commit ca3e76f

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

version_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"gorm.io/driver/postgres"
1212
"gorm.io/driver/sqlite"
1313
"gorm.io/gorm"
14+
"gorm.io/gorm/logger"
1415
)
1516

1617
var (
@@ -263,3 +264,50 @@ func TestPostgres(t *testing.T) {
263264
require.Equal(t, int64(2), user.Version.Int64)
264265
require.Equal(t, uint(18), user.Age)
265266
}
267+
268+
func TestFullSaveAssociation(t *testing.T) {
269+
DB, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
270+
require.Nil(t, err)
271+
272+
type Order struct {
273+
ID uint64
274+
Amount int64
275+
Version Version
276+
}
277+
type User struct {
278+
ID uint64
279+
FirstName string
280+
LastName string
281+
Orders []*Order `gorm:"many2many:user_orders"`
282+
Version Version
283+
}
284+
285+
_ = DB.AutoMigrate(&User{}, &Order{})
286+
287+
u := User{
288+
ID: 1000,
289+
FirstName: "aaa",
290+
LastName: "bbb",
291+
Orders: []*Order{
292+
{
293+
ID: 2000,
294+
Amount: 5000,
295+
},
296+
},
297+
}
298+
299+
require.Nil(t, DB.Save(&u).Error)
300+
301+
u.Orders[0].Amount = 6000
302+
u.Orders[0].Version.Int64 = 1000
303+
DB = DB.Session(&gorm.Session{
304+
Logger: DB.Logger.LogMode(logger.Info),
305+
FullSaveAssociations: true,
306+
})
307+
DB.Table("users").Updates(&u)
308+
309+
var o Order
310+
require.Nil(t, DB.First(&o).Error)
311+
require.Equal(t, int64(6000), o.Amount)
312+
require.Equal(t, int64(1000), o.Version.Int64)
313+
}

0 commit comments

Comments
 (0)