diff options
Diffstat (limited to 'internal/notify/config_test.go')
| -rw-r--r-- | internal/notify/config_test.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/internal/notify/config_test.go b/internal/notify/config_test.go new file mode 100644 index 0000000..46032ee --- /dev/null +++ b/internal/notify/config_test.go @@ -0,0 +1,65 @@ +// Copyright (C) 2026 Danilo M. <danix@danix.xyz> +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +package notify + +import ( + "os" + "path/filepath" + "testing" +) + +func writeConfig(t *testing.T, body string) string { + t.Helper() + p := filepath.Join(t.TempDir(), "config.json") + if err := os.WriteFile(p, []byte(body), 0o600); err != nil { + t.Fatal(err) + } + return p +} + +func TestLoadConfigMissingFileIsDefaults(t *testing.T) { + got := LoadConfig(filepath.Join(t.TempDir(), "absent.json")) + if got != DefaultConfig() { + t.Errorf("got %+v, want defaults", got) + } +} + +func TestLoadConfigMalformedIsDefaults(t *testing.T) { + got := LoadConfig(writeConfig(t, `{"liveCap": 5,`)) + if got != DefaultConfig() { + t.Errorf("got %+v, want defaults", got) + } +} + +func TestLoadConfigPartialMergesOverDefaults(t *testing.T) { + got := LoadConfig(writeConfig(t, `{"timeouts": {"low": 3}, "historyCap": 50, "muted": ["x"]}`)) + want := DefaultConfig() + want.Timeouts.Low = 3 + want.HistoryCap = 50 + if got != want { + t.Errorf("got %+v, want %+v", got, want) + } +} + +func TestLoadConfigWrongTypeKeepsThatDefault(t *testing.T) { + got := LoadConfig(writeConfig(t, `{"liveCap": "many", "historyCap": 7}`)) + if got.LiveCap != 20 || got.HistoryCap != 7 { + t.Errorf("got live %d history %d, want 20 and 7", got.LiveCap, got.HistoryCap) + } +} + +func TestLoadConfigClamps(t *testing.T) { + got := LoadConfig(writeConfig(t, `{"liveCap": 0, "historyCap": 1000, "timeouts": {"normal": -4}}`)) + if got.LiveCap != 1 || got.HistoryCap != 100 || got.Timeouts.Normal != 10 { + t.Errorf("got %+v", got) + } +} |
