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)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|