fix: 启动参数 duration 候选值对齐后端标准格式
前端 Select 使用 Go time.Duration.String() 标准字符串作为 value, 与后端查询/保存响应保持一致,解决保存后反显不匹配的问题。
This commit is contained in:
@@ -66,6 +66,63 @@ func TestDurationConversion(t *testing.T) {
|
||||
assert.Equal(t, cfg.Database.ConnMaxLifetime, parsed)
|
||||
}
|
||||
|
||||
func TestSaveConfigToPath_DurationFormat(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
configPath := filepath.Join(dir, "config.yaml")
|
||||
|
||||
cfg := DefaultConfig()
|
||||
cfg.Server.ReadTimeout = 30 * time.Second
|
||||
cfg.Server.WriteTimeout = 1 * time.Minute
|
||||
cfg.Database.ConnMaxLifetime = 1 * time.Hour
|
||||
|
||||
err := SaveConfigToPath(cfg, configPath)
|
||||
require.NoError(t, err)
|
||||
|
||||
data, err := os.ReadFile(configPath)
|
||||
require.NoError(t, err)
|
||||
content := string(data)
|
||||
assert.Contains(t, content, "conn_max_lifetime: 1h0m0s")
|
||||
assert.Contains(t, content, "read_timeout: 30s")
|
||||
assert.Contains(t, content, "write_timeout: 1m0s")
|
||||
}
|
||||
|
||||
func TestSaveAndReload_DurationRoundTrip(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
configPath := filepath.Join(dir, "config.yaml")
|
||||
|
||||
yamlContent := `
|
||||
server:
|
||||
port: 9826
|
||||
read_timeout: 30s
|
||||
write_timeout: 1m
|
||||
database:
|
||||
driver: sqlite
|
||||
path: ` + filepath.Join(dir, "test.db") + `
|
||||
max_idle_conns: 10
|
||||
max_open_conns: 100
|
||||
conn_max_lifetime: 30m
|
||||
log:
|
||||
level: info
|
||||
path: ` + filepath.Join(dir, "log") + `
|
||||
max_size: 100
|
||||
max_backups: 10
|
||||
max_age: 30
|
||||
compress: true
|
||||
`
|
||||
require.NoError(t, os.WriteFile(configPath, []byte(yamlContent), 0o600))
|
||||
|
||||
cfg, err := LoadDesktopConfigAtPath(configPath)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 30*time.Minute, cfg.Database.ConnMaxLifetime)
|
||||
|
||||
err = SaveConfigToPath(cfg, configPath)
|
||||
require.NoError(t, err)
|
||||
|
||||
data, err := os.ReadFile(configPath)
|
||||
require.NoError(t, err)
|
||||
assert.Contains(t, string(data), "conn_max_lifetime: 30m0s")
|
||||
}
|
||||
|
||||
func configToDTO(c *Config) struct {
|
||||
Server struct {
|
||||
Port int `json:"port"`
|
||||
|
||||
Reference in New Issue
Block a user