Test update association with non-updatable
This commit is contained in:
		
							parent
							
								
									4b170be27d
								
							
						
					
					
						commit
						d552241e26
					
				@ -1,6 +1,7 @@
 | 
				
			|||||||
package tests_test
 | 
					package tests_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"database/sql"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -85,4 +86,48 @@ func TestUpdateHasOne(t *testing.T) {
 | 
				
			|||||||
		DB.Preload("Toy").Find(&pet4, "id = ?", pet.ID)
 | 
							DB.Preload("Toy").Find(&pet4, "id = ?", pet.ID)
 | 
				
			||||||
		CheckPet(t, pet4, pet)
 | 
							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)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user