api/handler/service_volume_dependency_test.go
Rama main · réplica de lectura del repositorio original.
package handler
import (
"testing"
"github.com/goodrain/rainbond/db"
dbdao "github.com/goodrain/rainbond/db/dao"
dbmodel "github.com/goodrain/rainbond/db/model"
)
type volumeDependencyDeleteTestManager struct {
db.Manager
mountRelationDao dbdao.TenantServiceMountRelationDao
}
func (m volumeDependencyDeleteTestManager) TenantServiceMountRelationDao() dbdao.TenantServiceMountRelationDao {
return m.mountRelationDao
}
type preciseVolumeDependencyDeleteDao struct {
dbdao.TenantServiceMountRelationDao
serviceID string
dependServiceID string
volumeName string
}
func (d *preciseVolumeDependencyDeleteDao) DeleteTenantServiceMountRelation(serviceID, dependServiceID, volumeName string) error {
d.serviceID = serviceID
d.dependServiceID = dependServiceID
d.volumeName = volumeName
return nil
}
// capability_id: rainbond.volume-dependency.precise-delete
func TestVolumeDependencyDeleteUsesConsumerProviderAndVolumeName(t *testing.T) {
dao := &preciseVolumeDependencyDeleteDao{}
originalManager := db.GetManager()
db.SetTestManager(volumeDependencyDeleteTestManager{mountRelationDao: dao})
t.Cleanup(func() { db.SetTestManager(originalManager) })
relation := &dbmodel.TenantServiceMountRelation{
ServiceID: "consumer-service",
DependServiceID: "provider-service",
VolumeName: "shared-config",
}
if apiErr := (&ServiceAction{}).VolumeDependency(relation, "delete"); apiErr != nil {
t.Fatalf("delete volume dependency: %v", apiErr)
}
if dao.serviceID != relation.ServiceID || dao.dependServiceID != relation.DependServiceID || dao.volumeName != relation.VolumeName {
t.Fatalf("expected exact delete (%q, %q, %q), got (%q, %q, %q)",
relation.ServiceID, relation.DependServiceID, relation.VolumeName,
dao.serviceID, dao.dependServiceID, dao.volumeName)
}
}