优化
This commit is contained in:
@@ -98,3 +98,60 @@ func TestReconcileRootAuthorityAPIsUsesIndependentQueries(t *testing.T) {
|
||||
t.Fatalf("root rules = %#v, want only GET /allowed", rules)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMigrateLegacyAuthorityDepartmentColumns(t *testing.T) {
|
||||
db, err := openWithDriver("sqlite", "file:"+t.Name()+"?mode=memory&cache=shared")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { _ = sqlDB.Close() })
|
||||
|
||||
for _, statement := range []string{
|
||||
`CREATE TABLE sys_authority_departments (authority_id integer, department_id integer, PRIMARY KEY (authority_id, department_id))`,
|
||||
`INSERT INTO sys_authority_departments (authority_id, department_id) VALUES (888, 7)`,
|
||||
} {
|
||||
if err = db.Exec(statement).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
if err = migrateLegacyAuthorityDepartmentColumns(db); err != nil {
|
||||
t.Fatalf("migrate legacy authority-department columns: %v", err)
|
||||
}
|
||||
if err = db.AutoMigrate(&authorityDepartmentPO{}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
var relation authorityDepartmentPO
|
||||
if err = db.First(&relation).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if relation.AuthorityID != 888 || relation.DepartmentID != 7 {
|
||||
t.Fatalf("migrated relation = %#v", relation)
|
||||
}
|
||||
for _, column := range []string{"sys_authority_authority_id", "sys_department_id"} {
|
||||
if !tableHasColumn(db, "sys_authority_departments", column) {
|
||||
t.Fatalf("missing compatible column %s", column)
|
||||
}
|
||||
}
|
||||
hasPrimaryKey, err := tableHasPrimaryKey(db, "sys_authority_departments")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if hasPrimaryKey {
|
||||
t.Fatal("authority-department table retained the legacy primary key")
|
||||
}
|
||||
if err = db.Create(&authorityDepartmentPO{AuthorityID: 888, DepartmentID: 7}).Error; err != nil {
|
||||
t.Fatalf("duplicate administration relation was rejected: %v", err)
|
||||
}
|
||||
var count int64
|
||||
if err = db.Model(&authorityDepartmentPO{}).Where("sys_authority_authority_id = ? AND sys_department_id = ?", 888, 7).Count(&count).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if count != 2 {
|
||||
t.Fatalf("duplicate relation count = %d, want 2", count)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user