From 590bb1015bc1b3f3e51d9a0ea6d861705b12cd4b Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 4 Apr 2017 12:39:48 +0800 Subject: [PATCH] add FindPtr for belongs_to --- blongs_to_test.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/blongs_to_test.go b/blongs_to_test.go index b5f3983a..9ab2faa0 100644 --- a/blongs_to_test.go +++ b/blongs_to_test.go @@ -165,3 +165,54 @@ func TestBelongsTo_Find(t *testing.T) { assert.Equal(t, "face1", noses2[0].Face.Name) assert.Equal(t, "face2", noses2[1].Face.Name) } + +func TestBelongsTo_FindPtr(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type Face struct { + Id int64 + Name string + } + + type Nose struct { + Id int64 + Face *Face `xorm:"belongs_to"` + } + + err := testEngine.Sync2(new(Nose), new(Face)) + assert.NoError(t, err) + + var face1 = Face{ + Name: "face1", + } + var face2 = Face{ + Name: "face2", + } + _, err = testEngine.Insert(&face1, &face2) + assert.NoError(t, err) + + var noses = []Nose{ + {Face: &face1}, + {Face: &face2}, + } + _, err = testEngine.Insert(&noses) + assert.NoError(t, err) + + var noses1 []Nose + err = testEngine.Find(&noses1) + assert.NoError(t, err) + assert.Equal(t, 2, len(noses1)) + assert.Equal(t, face1.Id, noses1[0].Face.Id) + assert.Equal(t, face2.Id, noses1[1].Face.Id) + assert.Equal(t, "", noses1[0].Face.Name) + assert.Equal(t, "", noses1[1].Face.Name) + + var noses2 []Nose + err = testEngine.Cascade().Find(&noses2) + assert.NoError(t, err) + assert.Equal(t, 2, len(noses2)) + assert.Equal(t, face1.Id, noses2[0].Face.Id) + assert.Equal(t, face2.Id, noses2[1].Face.Id) + assert.Equal(t, "face1", noses2[0].Face.Name) + assert.Equal(t, "face2", noses2[1].Face.Name) +}