1package app
2
3import (
4 "testing"
5
6 "github.com/spf13/viper"
7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/require"
9
10 "github.com/bnema/gordon/internal/domain"
11)
12
13func TestLoadConfigSetsImagePruneDefaults(t *testing.T) {
14 v := viper.New()
15
16 require.NoError(t, loadConfig(v, ""))
17
18 assert.False(t, v.GetBool("images.prune.enabled"))
19 assert.Equal(t, string(domain.ScheduleDaily), v.GetString("images.prune.schedule"))
20 assert.Equal(t, domain.DefaultImagePruneKeepLast, v.GetInt("images.prune.keep_last"))
21}
22
23func TestResolveImagePruneSchedule(t *testing.T) {
24 t.Run("valid values", func(t *testing.T) {
25 tests := []struct {
26 input string
27 want domain.BackupSchedule
28 }{
29 {input: "hourly", want: domain.ScheduleHourly},
30 {input: "daily", want: domain.ScheduleDaily},
31 {input: "weekly", want: domain.ScheduleWeekly},
32 {input: "monthly", want: domain.ScheduleMonthly},
33 {input: " DAILY ", want: domain.ScheduleDaily},
34 }
35
36 for _, tt := range tests {
37 t.Run(tt.input, func(t *testing.T) {
38 got, err := resolveImagePruneSchedule(tt.input)
39 require.NoError(t, err)
40 assert.Equal(t, tt.want, got)
41 })
42 }
43 })
44
45 t.Run("invalid value", func(t *testing.T) {
46 _, err := resolveImagePruneSchedule("every-minute")
47 require.Error(t, err)
48 assert.Contains(t, err.Error(), "images.prune.schedule")
49 })
50}