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

Function TestUniqueColumn

tests/migrate_test.go:1163–1281  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1161}
1162
1163func TestUniqueColumn(t *testing.T) {
1164 if DB.Dialector.Name() != "mysql" {
1165 return
1166 }
1167
1168 type UniqueTest struct {
1169 ID string `gorm:"primary_key"`
1170 Name string `gorm:"unique"`
1171 }
1172
1173 type UniqueTest2 struct {
1174 ID string `gorm:"primary_key"`
1175 Name string `gorm:"unique;default:NULL"`
1176 }
1177
1178 type UniqueTest3 struct {
1179 ID string `gorm:"primary_key"`
1180 Name string `gorm:"unique;default:''"`
1181 }
1182
1183 type UniqueTest4 struct {
1184 ID string `gorm:"primary_key"`
1185 Name string `gorm:"unique;default:'123'"`
1186 }
1187
1188 var err error
1189 err = DB.Migrator().DropTable(&UniqueTest{})
1190 if err != nil {
1191 t.Errorf("DropTable err:%v", err)
1192 }
1193
1194 err = DB.AutoMigrate(&UniqueTest{})
1195 if err != nil {
1196 t.Fatalf("AutoMigrate err:%v", err)
1197 }
1198
1199 // null -> null
1200 err = DB.AutoMigrate(&UniqueTest{})
1201 if err != nil {
1202 t.Fatalf("AutoMigrate err:%v", err)
1203 }
1204
1205 ct, err := findColumnType(&UniqueTest{}, "name")
1206 if err != nil {
1207 t.Fatalf("findColumnType err:%v", err)
1208 }
1209
1210 value, ok := ct.DefaultValue()
1211 AssertEqual(t, "", value)
1212 AssertEqual(t, false, ok)
1213
1214 // null -> null
1215 err = DB.Table("unique_tests").AutoMigrate(&UniqueTest2{})
1216 if err != nil {
1217 t.Fatalf("AutoMigrate err:%v", err)
1218 }
1219
1220 // not trigger alert column

Callers

nothing calls this directly

Calls 11

findColumnTypeFunction · 0.85
tidbSkipFunction · 0.85
NameMethod · 0.65
DropTableMethod · 0.65
MigratorMethod · 0.65
AutoMigrateMethod · 0.65
DefaultValueMethod · 0.65
TableMethod · 0.65
HasConstraintMethod · 0.65
HasIndexMethod · 0.65
AssertEqualFunction · 0.50

Tested by

no test coverage detected