147 lines
3.2 KiB
Go
147 lines
3.2 KiB
Go
|
|
package repository
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"testing"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// TestSystemConfigRepository_QueryConditions 测试系统配置查询条件逻辑
|
|||
|
|
func TestSystemConfigRepository_QueryConditions(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
key string
|
|||
|
|
isPublic bool
|
|||
|
|
wantValid bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "有效的配置键",
|
|||
|
|
key: "site_name",
|
|||
|
|
isPublic: true,
|
|||
|
|
wantValid: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "配置键为空",
|
|||
|
|
key: "",
|
|||
|
|
isPublic: true,
|
|||
|
|
wantValid: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "公开配置查询",
|
|||
|
|
key: "site_name",
|
|||
|
|
isPublic: true,
|
|||
|
|
wantValid: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "私有配置查询",
|
|||
|
|
key: "secret_key",
|
|||
|
|
isPublic: false,
|
|||
|
|
wantValid: true,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
isValid := tt.key != ""
|
|||
|
|
if isValid != tt.wantValid {
|
|||
|
|
t.Errorf("Query condition validation failed: got %v, want %v", isValid, tt.wantValid)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestSystemConfigRepository_PublicConfigLogic 测试公开配置逻辑
|
|||
|
|
func TestSystemConfigRepository_PublicConfigLogic(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
isPublic bool
|
|||
|
|
wantInclude bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "只获取公开配置",
|
|||
|
|
isPublic: true,
|
|||
|
|
wantInclude: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "私有配置不应包含",
|
|||
|
|
isPublic: false,
|
|||
|
|
wantInclude: false,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
// 验证逻辑:GetPublicSystemConfigs应该只返回is_public=true的配置
|
|||
|
|
if tt.isPublic != tt.wantInclude {
|
|||
|
|
t.Errorf("Public config logic failed: isPublic=%v, wantInclude=%v", tt.isPublic, tt.wantInclude)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestSystemConfigRepository_UpdateValueLogic 测试更新配置值逻辑
|
|||
|
|
func TestSystemConfigRepository_UpdateValueLogic(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
key string
|
|||
|
|
value string
|
|||
|
|
wantValid bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "有效的键值对",
|
|||
|
|
key: "site_name",
|
|||
|
|
value: "CarrotSkin",
|
|||
|
|
wantValid: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "键为空",
|
|||
|
|
key: "",
|
|||
|
|
value: "CarrotSkin",
|
|||
|
|
wantValid: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "值为空(可能有效)",
|
|||
|
|
key: "site_name",
|
|||
|
|
value: "",
|
|||
|
|
wantValid: true, // 空值也可能是有效的
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
isValid := tt.key != ""
|
|||
|
|
if isValid != tt.wantValid {
|
|||
|
|
t.Errorf("Update value validation failed: got %v, want %v", isValid, tt.wantValid)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestSystemConfigRepository_ErrorHandling 测试错误处理逻辑
|
|||
|
|
func TestSystemConfigRepository_ErrorHandling(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
isNotFound bool
|
|||
|
|
wantNilConfig bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "记录未找到应该返回nil配置",
|
|||
|
|
isNotFound: true,
|
|||
|
|
wantNilConfig: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "找到记录应该返回配置",
|
|||
|
|
isNotFound: false,
|
|||
|
|
wantNilConfig: false,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
// 验证错误处理逻辑:如果是RecordNotFound,返回nil配置
|
|||
|
|
if tt.isNotFound != tt.wantNilConfig {
|
|||
|
|
t.Errorf("Error handling logic failed: isNotFound=%v, wantNilConfig=%v", tt.isNotFound, tt.wantNilConfig)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|