feat: 新增 MySQL 数据库驱动支持,支持跨设备数据同步
This commit is contained in:
@@ -19,6 +19,12 @@ func TestDefaultConfig(t *testing.T) {
|
||||
assert.Equal(t, 30*time.Second, cfg.Server.ReadTimeout)
|
||||
assert.Equal(t, 30*time.Second, cfg.Server.WriteTimeout)
|
||||
|
||||
assert.Equal(t, "sqlite", cfg.Database.Driver)
|
||||
assert.Equal(t, "", cfg.Database.Host)
|
||||
assert.Equal(t, 3306, cfg.Database.Port)
|
||||
assert.Equal(t, "", cfg.Database.User)
|
||||
assert.Equal(t, "", cfg.Database.Password)
|
||||
assert.Equal(t, "nex", cfg.Database.DBName)
|
||||
assert.Equal(t, 10, cfg.Database.MaxIdleConns)
|
||||
assert.Equal(t, 100, cfg.Database.MaxOpenConns)
|
||||
assert.Equal(t, 1*time.Hour, cfg.Database.ConnMaxLifetime)
|
||||
@@ -86,11 +92,76 @@ func TestConfig_Validate(t *testing.T) {
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "数据库路径为空无效",
|
||||
name: "SQLite模式路径为空无效",
|
||||
modify: func(c *Config) { c.Database.Path = "" },
|
||||
wantErr: true,
|
||||
errMsg: "配置验证失败",
|
||||
},
|
||||
{
|
||||
name: "driver值不合法",
|
||||
modify: func(c *Config) { c.Database.Driver = "postgres" },
|
||||
wantErr: true,
|
||||
errMsg: "配置验证失败",
|
||||
},
|
||||
{
|
||||
name: "MySQL配置有效",
|
||||
modify: func(c *Config) {
|
||||
c.Database.Driver = "mysql"
|
||||
c.Database.Host = "localhost"
|
||||
c.Database.Port = 3306
|
||||
c.Database.User = "root"
|
||||
c.Database.DBName = "nex"
|
||||
c.Database.Path = ""
|
||||
},
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "MySQL模式host为空无效",
|
||||
modify: func(c *Config) {
|
||||
c.Database.Driver = "mysql"
|
||||
c.Database.Host = ""
|
||||
c.Database.User = "root"
|
||||
c.Database.DBName = "nex"
|
||||
c.Database.Path = ""
|
||||
},
|
||||
wantErr: true,
|
||||
errMsg: "配置验证失败",
|
||||
},
|
||||
{
|
||||
name: "MySQL模式user为空无效",
|
||||
modify: func(c *Config) {
|
||||
c.Database.Driver = "mysql"
|
||||
c.Database.Host = "localhost"
|
||||
c.Database.User = ""
|
||||
c.Database.DBName = "nex"
|
||||
c.Database.Path = ""
|
||||
},
|
||||
wantErr: true,
|
||||
errMsg: "配置验证失败",
|
||||
},
|
||||
{
|
||||
name: "MySQL模式dbname为空无效",
|
||||
modify: func(c *Config) {
|
||||
c.Database.Driver = "mysql"
|
||||
c.Database.Host = "localhost"
|
||||
c.Database.User = "root"
|
||||
c.Database.DBName = ""
|
||||
c.Database.Path = ""
|
||||
},
|
||||
wantErr: true,
|
||||
errMsg: "配置验证失败",
|
||||
},
|
||||
{
|
||||
name: "MySQL模式忽略path字段",
|
||||
modify: func(c *Config) {
|
||||
c.Database.Driver = "mysql"
|
||||
c.Database.Host = "localhost"
|
||||
c.Database.User = "root"
|
||||
c.Database.DBName = "nex"
|
||||
c.Database.Path = ""
|
||||
},
|
||||
wantErr: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
@@ -140,7 +211,10 @@ func TestSaveAndLoadConfig(t *testing.T) {
|
||||
WriteTimeout: 20 * time.Second,
|
||||
},
|
||||
Database: DatabaseConfig{
|
||||
Driver: "sqlite",
|
||||
Path: filepath.Join(dir, "test.db"),
|
||||
Port: 3306,
|
||||
DBName: "nex",
|
||||
MaxIdleConns: 5,
|
||||
MaxOpenConns: 50,
|
||||
ConnMaxLifetime: 30 * time.Minute,
|
||||
@@ -210,6 +284,9 @@ func TestConfigPriority(t *testing.T) {
|
||||
assert.Equal(t, 9826, cfg.Server.Port)
|
||||
assert.Equal(t, 30*time.Second, cfg.Server.ReadTimeout)
|
||||
assert.Equal(t, 30*time.Second, cfg.Server.WriteTimeout)
|
||||
assert.Equal(t, "sqlite", cfg.Database.Driver)
|
||||
assert.Equal(t, 3306, cfg.Database.Port)
|
||||
assert.Equal(t, "nex", cfg.Database.DBName)
|
||||
assert.Equal(t, 10, cfg.Database.MaxIdleConns)
|
||||
assert.Equal(t, 100, cfg.Database.MaxOpenConns)
|
||||
assert.Equal(t, 1*time.Hour, cfg.Database.ConnMaxLifetime)
|
||||
@@ -222,11 +299,19 @@ func TestConfigPriority(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestPrintSummary(t *testing.T) {
|
||||
// 测试配置摘要输出
|
||||
t.Run("打印配置摘要", func(t *testing.T) {
|
||||
t.Run("SQLite模式摘要", func(t *testing.T) {
|
||||
cfg := DefaultConfig()
|
||||
// PrintSummary 只是打印,不会返回错误
|
||||
// 这里主要验证不会 panic
|
||||
assert.NotPanics(t, func() {
|
||||
cfg.PrintSummary()
|
||||
})
|
||||
})
|
||||
t.Run("MySQL模式摘要", func(t *testing.T) {
|
||||
cfg := DefaultConfig()
|
||||
cfg.Database.Driver = "mysql"
|
||||
cfg.Database.Host = "db.example.com"
|
||||
cfg.Database.Port = 3306
|
||||
cfg.Database.User = "nex"
|
||||
cfg.Database.DBName = "nex"
|
||||
assert.NotPanics(t, func() {
|
||||
cfg.PrintSummary()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user