From 076c3c2c1b7b6a5692072033d645516f10e81265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nico=20Sch=C3=A4fer?= Date: Thu, 2 May 2024 10:32:47 +0000 Subject: [PATCH] Add test case for pointer join with nested prelaods --- tests/preload_test.go | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/preload_test.go b/tests/preload_test.go index 14f94139..3c5dca1f 100644 --- a/tests/preload_test.go +++ b/tests/preload_test.go @@ -374,6 +374,58 @@ func TestNestedPreloadWithNestedJoin(t *testing.T) { AssertEqual(t, finds[0], value) } +func TestNestedPreloadWithPointerJoin(t *testing.T) { + type ( + Preload struct { + ID uint + Value string + JoinID uint + } + Join struct { + ID uint + Value string + Preload Preload + NestedID uint + } + Nested struct { + ID uint + Join Join + ValueID uint + } + Value struct { + ID uint + Name string + Nested *Nested + } + ) + + DB.Migrator().DropTable(&Preload{}, &Join{}, &Nested{}, &Value{}) + DB.Migrator().AutoMigrate(&Preload{}, &Join{}, &Nested{}, &Value{}) + + value := Value{ + Name: "value", + Nested: &Nested{ + Join: Join{ + Value: "j1", + Preload: Preload{ + Value: "p1", + }, + }, + }, + } + + if err := DB.Create(&value).Error; err != nil { + t.Errorf("failed to create value, got err: %v", err) + } + + var find1 Value + err := DB.Table("Values").Joins("Nested").Joins("Nested.Join").Preload("Nested.Join.Preload").First(&find1).Error + if err != nil { + t.Errorf("failed to find value, got err: %v", err) + } + AssertEqual(t, find1, value) +} + func TestEmbedPreload(t *testing.T) { type Country struct { ID int `gorm:"primaryKey"`