Skip to content

Commit

Permalink
Test update association with non-updatable
Browse files Browse the repository at this point in the history
  • Loading branch information
zkqiang authored and jinzhu committed Aug 26, 2021
1 parent e81833f commit 7474621
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions tests/update_has_one_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tests_test

import (
"database/sql"
"testing"
"time"

Expand Down Expand Up @@ -85,4 +86,48 @@ func TestUpdateHasOne(t *testing.T) {
DB.Preload("Toy").Find(&pet4, "id = ?", pet.ID)
CheckPet(t, pet4, pet)
})

t.Run("Restriction", func(t *testing.T) {
type CustomizeAccount struct {
gorm.Model
UserID sql.NullInt64
Number string `gorm:"<-:create"`
}

type CustomizeUser struct {
gorm.Model
Name string
Account CustomizeAccount `gorm:"foreignkey:UserID"`
}

DB.Migrator().DropTable(&CustomizeUser{})
DB.Migrator().DropTable(&CustomizeAccount{})

if err := DB.AutoMigrate(&CustomizeUser{}); err != nil {
t.Fatalf("failed to migrate, got error: %v", err)
}
if err := DB.AutoMigrate(&CustomizeAccount{}); err != nil {
t.Fatalf("failed to migrate, got error: %v", err)
}

number := "number-has-one-associations"
cusUser := CustomizeUser{
Name: "update-has-one-associations",
Account: CustomizeAccount{
Number: number,
},
}

if err := DB.Create(&cusUser).Error; err != nil {
t.Fatalf("errors happened when create: %v", err)
}
cusUser.Account.Number += "-update"
if err := DB.Session(&gorm.Session{FullSaveAssociations: true}).Updates(&cusUser).Error; err != nil {
t.Fatalf("errors happened when create: %v", err)
}

var account2 CustomizeAccount
DB.Find(&account2, "user_id = ?", cusUser.ID)
AssertEqual(t, account2.Number, number)
})
}

0 comments on commit 7474621

Please sign in to comment.