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

Function TestOverrideJoinTable

tests/joins_table_test.go:30–116  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

28}
29
30func TestOverrideJoinTable(t *testing.T) {
31 DB.Migrator().DropTable(&Person{}, &Address{}, &PersonAddress{})
32
33 if err := DB.SetupJoinTable(&Person{}, "Addresses", &PersonAddress{}); err != nil {
34 t.Fatalf("Failed to setup join table for person, got error %v", err)
35 }
36
37 if err := DB.AutoMigrate(&Person{}, &Address{}); err != nil {
38 t.Fatalf("Failed to migrate, got %v", err)
39 }
40
41 address1 := Address{Name: "address 1"}
42 address2 := Address{Name: "address 2"}
43 person := Person{Name: "person", Addresses: []Address{address1, address2}}
44 DB.Create(&person)
45
46 var addresses1 []Address
47 if err := DB.Model(&person).Association("Addresses").Find(&addresses1); err != nil || len(addresses1) != 2 {
48 t.Fatalf("Failed to find address, got error %v, length: %v", err, len(addresses1))
49 }
50
51 if err := DB.Model(&person).Association("Addresses").Delete(&person.Addresses[0]); err != nil {
52 t.Fatalf("Failed to delete address, got error %v", err)
53 }
54
55 if len(person.Addresses) != 1 {
56 t.Fatalf("Should have one address left")
57 }
58
59 if DB.Find(&[]PersonAddress{}, "person_id = ?", person.ID).RowsAffected != 1 {
60 t.Fatalf("Should found one address")
61 }
62
63 var addresses2 []Address
64 if err := DB.Model(&person).Association("Addresses").Find(&addresses2); err != nil || len(addresses2) != 1 {
65 t.Fatalf("Failed to find address, got error %v, length: %v", err, len(addresses2))
66 }
67
68 if DB.Model(&person).Association("Addresses").Count() != 1 {
69 t.Fatalf("Should found one address")
70 }
71
72 var addresses3 []Address
73 if err := DB.Unscoped().Model(&person).Association("Addresses").Find(&addresses3); err != nil || len(addresses3) != 2 {
74 t.Fatalf("Failed to find address, got error %v, length: %v", err, len(addresses3))
75 }
76
77 if DB.Unscoped().Find(&[]PersonAddress{}, "person_id = ?", person.ID).RowsAffected != 2 {
78 t.Fatalf("Should found soft deleted addresses with unscoped")
79 }
80
81 if DB.Unscoped().Model(&person).Association("Addresses").Count() != 2 {
82 t.Fatalf("Should found soft deleted addresses with unscoped")
83 }
84
85 DB.Model(&person).Association("Addresses").Clear()
86
87 if DB.Model(&person).Association("Addresses").Count() != 0 {

Callers

nothing calls this directly

Calls 13

SetupJoinTableMethod · 0.80
ModelMethod · 0.80
ClearMethod · 0.80
DropTableMethod · 0.65
MigratorMethod · 0.65
AutoMigrateMethod · 0.65
CreateMethod · 0.65
FindMethod · 0.65
DeleteMethod · 0.65
CountMethod · 0.65
SelectMethod · 0.65
AssociationMethod · 0.45

Tested by

no test coverage detected