| 288 | } |
| 289 | |
| 290 | func TestJoinArgsWithDB(t *testing.T) { |
| 291 | user := *GetUser("joins-args-db", Config{Pets: 2}) |
| 292 | DB.Save(&user) |
| 293 | |
| 294 | // test where |
| 295 | var user1 User |
| 296 | onQuery := DB.Where(&Pet{Name: "joins-args-db_pet_2"}) |
| 297 | if err := DB.Joins("NamedPet", onQuery).Where("users.name = ?", user.Name).First(&user1).Error; err != nil { |
| 298 | t.Fatalf("Failed to load with joins on, got error: %v", err) |
| 299 | } |
| 300 | |
| 301 | AssertEqual(t, user1.NamedPet.Name, "joins-args-db_pet_2") |
| 302 | |
| 303 | // test where and omit |
| 304 | onQuery2 := DB.Where(&Pet{Name: "joins-args-db_pet_2"}).Omit("Name") |
| 305 | var user2 User |
| 306 | if err := DB.Joins("NamedPet", onQuery2).Where("users.name = ?", user.Name).First(&user2).Error; err != nil { |
| 307 | t.Fatalf("Failed to load with joins on, got error: %v", err) |
| 308 | } |
| 309 | AssertEqual(t, user2.NamedPet.ID, user1.NamedPet.ID) |
| 310 | AssertEqual(t, user2.NamedPet.Name, "") |
| 311 | |
| 312 | // test where and select |
| 313 | onQuery3 := DB.Where(&Pet{Name: "joins-args-db_pet_2"}).Select("Name") |
| 314 | var user3 User |
| 315 | if err := DB.Joins("NamedPet", onQuery3).Where("users.name = ?", user.Name).First(&user3).Error; err != nil { |
| 316 | t.Fatalf("Failed to load with joins on, got error: %v", err) |
| 317 | } |
| 318 | AssertEqual(t, user3.NamedPet.ID, 0) |
| 319 | AssertEqual(t, user3.NamedPet.Name, "joins-args-db_pet_2") |
| 320 | |
| 321 | // test select |
| 322 | onQuery4 := DB.Select("ID") |
| 323 | var user4 User |
| 324 | if err := DB.Joins("NamedPet", onQuery4).Where("users.name = ?", user.Name).First(&user4).Error; err != nil { |
| 325 | t.Fatalf("Failed to load with joins on, got error: %v", err) |
| 326 | } |
| 327 | if user4.NamedPet.ID == 0 { |
| 328 | t.Fatal("Pet ID can not be empty") |
| 329 | } |
| 330 | AssertEqual(t, user4.NamedPet.Name, "") |
| 331 | } |
| 332 | |
| 333 | func TestNestedJoins(t *testing.T) { |
| 334 | users := []User{ |