From 6ad6d29578cdf9560958f8bb6fa1552ddd5d3de9 Mon Sep 17 00:00:00 2001 From: Jim Lambert Date: Wed, 19 Feb 2020 07:56:13 -0500 Subject: [PATCH] better conditional handling of ora reserved words in tests --- association_test.go | 7 ++++++- delete_test.go | 11 ++++++++--- main_test.go | 10 +++++++--- query_test.go | 7 +++++-- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/association_test.go b/association_test.go index 4703e94f..cb8a5edd 100644 --- a/association_test.go +++ b/association_test.go @@ -792,7 +792,12 @@ func TestRelated(t *testing.T) { var creditcard CreditCard var user3 User - DB.First(&creditcard, `"number" = ?`, "1234567890") // you have to properly quote number as a reserved word + numberIs := "number = ?" + if isOra(DB) { + numberIs = `"number" = ?` + } + + DB.First(&creditcard, numberIs, "1234567890") // you have to properly quote number as a reserved word DB.Model(&creditcard).Related(&user3) if user3.Id != user.Id || user3.Name != user.Name { t.Errorf("Should get user from credit card correctly") diff --git a/delete_test.go b/delete_test.go index c3c71f25..ec514b9d 100644 --- a/delete_test.go +++ b/delete_test.go @@ -76,16 +76,21 @@ func TestSoftDeleteWithCustomizedDeletedAtColumnName(t *testing.T) { t.Errorf("CreditCard's DeletedAt's column name should be `deleted_time`") } - if DB.First(&CreditCard{}, `"number" = ?`, creditCard.Number).Error == nil { + numberIs := "number = ?" + if isOra(DB) { + numberIs = `"number" = ?` + } + + if DB.First(&CreditCard{}, numberIs, creditCard.Number).Error == nil { t.Errorf("Can't find a soft deleted record") } - if err := DB.Unscoped().First(&CreditCard{}, `"number" = ?`, creditCard.Number).Error; err != nil { + if err := DB.Unscoped().First(&CreditCard{}, numberIs, creditCard.Number).Error; err != nil { t.Errorf("Should be able to find soft deleted record with Unscoped, but err=%s", err) } DB.Unscoped().Delete(&creditCard) - if !DB.Unscoped().First(&CreditCard{}, `"number" = ?`, creditCard.Number).RecordNotFound() { + if !DB.Unscoped().First(&CreditCard{}, numberIs, creditCard.Number).RecordNotFound() { t.Errorf("Can't find permanently deleted record") } } diff --git a/main_test.go b/main_test.go index c7a405fa..fe9a415b 100644 --- a/main_test.go +++ b/main_test.go @@ -772,19 +772,23 @@ func TestJoins(t *testing.T) { } var users3 []User - DB.Joins("join emails on emails.user_id = users.id AND emails.email = ?", "join1@example.com").Joins("join credit_cards on credit_cards.user_id = users.id AND credit_cards.\"number\" = ?", "411111111111").Where("name = ?", "joins").First(&users3) + join := "join credit_cards on credit_cards.user_id = users.id AND credit_cards.number = ?" + if isOra(DB) { + join = "join credit_cards on credit_cards.user_id = users.id AND credit_cards.\"number\" = ?" + } + DB.Joins("join emails on emails.user_id = users.id AND emails.email = ?", "join1@example.com").Joins(join, "411111111111").Where("name = ?", "joins").First(&users3) if len(users3) != 1 { t.Errorf("should find one users using multiple left join conditions") } var users4 []User - DB.Joins("join emails on emails.user_id = users.id AND emails.email = ?", "join1@example.com").Joins("join credit_cards on credit_cards.user_id = users.id AND credit_cards.\"number\" = ?", "422222222222").Where("name = ?", "joins").First(&users4) + DB.Joins("join emails on emails.user_id = users.id AND emails.email = ?", "join1@example.com").Joins(join, "422222222222").Where("name = ?", "joins").First(&users4) if len(users4) != 0 { t.Errorf("should find no user when searching with unexisting credit card") } var users5 []User - db5 := DB.Joins("join emails on emails.user_id = users.id AND emails.email = ?", "join1@example.com").Joins("join credit_cards on credit_cards.user_id = users.id AND credit_cards.\"number\" = ?", "411111111111").Where(User{Id: 1}).Where(Email{Id: 1}).Not(Email{Id: 10}).First(&users5) + db5 := DB.Joins("join emails on emails.user_id = users.id AND emails.email = ?", "join1@example.com").Joins(join, "411111111111").Where(User{Id: 1}).Where(Email{Id: 1}).Not(Email{Id: 10}).First(&users5) if db5.Error != nil { t.Errorf("Should not raise error for join where identical fields in different tables. Error: %s", db5.Error.Error()) } diff --git a/query_test.go b/query_test.go index 636db069..ce62a82b 100644 --- a/query_test.go +++ b/query_test.go @@ -760,8 +760,11 @@ func TestFindOrCreate(t *testing.T) { if DB.Where("email = ?", "jinzhu-2@assign_embedded_struct.com").First(&Email{}).RecordNotFound() { t.Errorf("embedded struct email should be saved") } - - if DB.Where("\"number\" = ?", "1231231231").First(&CreditCard{}).RecordNotFound() { + numberIs := "number = ?" + if isOra(DB) { + numberIs = "\"number\" = ?" + } + if DB.Where(numberIs, "1231231231").First(&CreditCard{}).RecordNotFound() { t.Errorf("embedded struct credit card should be saved") } }