MCPcopy
hub / github.com/go-gorm/gorm / TestPolymorphicHasOne

Function TestPolymorphicHasOne

tests/create_test.go:242–351  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

240}
241
242func TestPolymorphicHasOne(t *testing.T) {
243 t.Run("Struct", func(t *testing.T) {
244 pet := Pet{
245 Name: "PolymorphicHasOne",
246 Toy: Toy{Name: "Toy-PolymorphicHasOne"},
247 }
248
249 if err := DB.Create(&pet).Error; err != nil {
250 t.Fatalf("errors happened when create: %v", err)
251 }
252
253 CheckPet(t, pet, pet)
254
255 var pet2 Pet
256 DB.Preload("Toy").Find(&pet2, "id = ?", pet.ID)
257 CheckPet(t, pet2, pet)
258 })
259
260 t.Run("Slice", func(t *testing.T) {
261 pets := []Pet{{
262 Name: "PolymorphicHasOne-Slice-1",
263 Toy: Toy{Name: "Toy-PolymorphicHasOne-Slice-1"},
264 }, {
265 Name: "PolymorphicHasOne-Slice-2",
266 Toy: Toy{Name: "Toy-PolymorphicHasOne-Slice-2"},
267 }, {
268 Name: "PolymorphicHasOne-Slice-3",
269 Toy: Toy{Name: "Toy-PolymorphicHasOne-Slice-3"},
270 }}
271
272 if err := DB.Create(&pets).Error; err != nil {
273 t.Fatalf("errors happened when create: %v", err)
274 }
275
276 var petIDs []uint
277 for _, pet := range pets {
278 petIDs = append(petIDs, pet.ID)
279 CheckPet(t, pet, pet)
280 }
281
282 var pets2 []Pet
283 DB.Preload("Toy").Find(&pets2, "id IN ?", petIDs)
284 for idx, pet := range pets2 {
285 CheckPet(t, pet, pets[idx])
286 }
287 })
288
289 t.Run("SliceOfPtr", func(t *testing.T) {
290 pets := []*Pet{{
291 Name: "PolymorphicHasOne-Slice-1",
292 Toy: Toy{Name: "Toy-PolymorphicHasOne-Slice-1"},
293 }, {
294 Name: "PolymorphicHasOne-Slice-2",
295 Toy: Toy{Name: "Toy-PolymorphicHasOne-Slice-2"},
296 }, {
297 Name: "PolymorphicHasOne-Slice-3",
298 Toy: Toy{Name: "Toy-PolymorphicHasOne-Slice-3"},
299 }}

Callers

nothing calls this directly

Calls 4

CheckPetFunction · 0.85
CreateMethod · 0.65
FindMethod · 0.65
PreloadMethod · 0.65

Tested by

no test coverage detected